Since "m" could stand for both "minute" and "month", and months vary in length, let's stop at days.
This commit is contained in:
		
							parent
							
								
									a492b3b668
								
							
						
					
					
						commit
						6622ea0e1c
					
				
							
								
								
									
										20
									
								
								acid.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								acid.go
									
									
									
									
									
								
							| @ -30,7 +30,6 @@ import ( | ||||
| 	"syscall" | ||||
| 	ttemplate "text/template" | ||||
| 	"time" | ||||
| 	"unicode" | ||||
| 
 | ||||
| 	_ "github.com/mattn/go-sqlite3" | ||||
| 	"github.com/pkg/sftp" | ||||
| @ -1603,18 +1602,15 @@ func (t *Task) CloneURL() string { | ||||
| } | ||||
| 
 | ||||
| func shortDurationString(d time.Duration) string { | ||||
| 	rs := []rune(d.Truncate(time.Second).String()) | ||||
| 	for i, r := range rs { | ||||
| 		if !unicode.IsLetter(r) { | ||||
| 			continue | ||||
| 		} | ||||
| 		i++ | ||||
| 		for i < len(rs) && unicode.IsLetter(rs[i]) { | ||||
| 			i++ | ||||
| 		} | ||||
| 		return string(rs[:i]) | ||||
| 	if d.Abs() >= 24*time.Hour { | ||||
| 		return strconv.FormatInt(int64(d/time.Hour/24), 10) + "d" | ||||
| 	} else if d.Abs() >= time.Hour { | ||||
| 		return strconv.FormatInt(int64(d/time.Hour), 10) + "h" | ||||
| 	} else if d.Abs() >= time.Minute { | ||||
| 		return strconv.FormatInt(int64(d/time.Minute), 10) + "m" | ||||
| 	} else { | ||||
| 		return strconv.FormatInt(int64(d/time.Second), 10) + "s" | ||||
| 	} | ||||
| 	return string(rs) | ||||
| } | ||||
| 
 | ||||
| func (t *Task) Created() *time.Time { | ||||
|  | ||||
							
								
								
									
										17
									
								
								acid_test.go
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								acid_test.go
									
									
									
									
									
								
							| @ -4,6 +4,7 @@ import ( | ||||
| 	"bytes" | ||||
| 	"testing" | ||||
| 	ttemplate "text/template" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| func TestTemplateQuote(t *testing.T) { | ||||
| @ -30,3 +31,19 @@ func TestTemplateQuote(t *testing.T) { | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestShortDurationString(t *testing.T) { | ||||
| 	for _, test := range []struct { | ||||
| 		d      time.Duration | ||||
| 		expect string | ||||
| 	}{ | ||||
| 		{72 * time.Hour, "3d"}, | ||||
| 		{-3 * time.Hour, "-3h"}, | ||||
| 		{12 * time.Minute, "12m"}, | ||||
| 		{time.Millisecond, "0s"}, | ||||
| 	} { | ||||
| 		if sd := shortDurationString(test.d); sd != test.expect { | ||||
| 			t.Errorf("%s = %s; want %s\n", test.d, sd, test.expect) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user