diff options
Diffstat (limited to 'duration')
-rw-r--r-- | duration/LICENSE | 21 | ||||
-rw-r--r-- | duration/doc.go | 10 | ||||
-rw-r--r-- | duration/duration.go | 80 | ||||
-rw-r--r-- | duration/duration_test.go | 38 |
4 files changed, 0 insertions, 149 deletions
diff --git a/duration/LICENSE b/duration/LICENSE deleted file mode 100644 index 036a2a1..0000000 --- a/duration/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Hervé GOUCHET - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/duration/doc.go b/duration/doc.go deleted file mode 100644 index 8fc5296..0000000 --- a/duration/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the MIT license -// that can be found in the LICENSE file. - -/* - -Package duration implements helpers to calculate time duration. - -*/ -package duration diff --git a/duration/duration.go b/duration/duration.go deleted file mode 100644 index fe84026..0000000 --- a/duration/duration.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2017 Hervé Gouchet. All rights reserved. -// Use of this source code is governed by the MIT License -// that can be found in the LICENSE file. - -package duration - -import ( - "math" - "time" - - "github.com/miniflux/miniflux/locale" -) - -// Texts to be translated if necessary. -var ( - NotYet = `not yet` - JustNow = `just now` - LastMinute = `1 minute ago` - Minutes = `%d minutes ago` - LastHour = `1 hour ago` - Hours = `%d hours ago` - Yesterday = `yesterday` - Days = `%d days ago` - Weeks = `%d weeks ago` - Months = `%d months ago` - Years = `%d years ago` -) - -// ElapsedTime returns in a human readable format the elapsed time -// since the given datetime. -func ElapsedTime(translator *locale.Language, timezone string, t time.Time) string { - if t.IsZero() { - return translator.Get(NotYet) - } - - var now time.Time - loc, err := time.LoadLocation(timezone) - if err != nil { - now = time.Now() - } else { - now = time.Now().In(loc) - - // The provided date is already converted to the user timezone by Postgres, - // but the timezone information is not set in the time struct. - // We cannot use time.In() because the date will be converted a second time. - t = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), loc) - } - - if now.Before(t) { - return translator.Get(NotYet) - } - - diff := now.Sub(t) - // Duration in seconds - s := diff.Seconds() - // Duration in days - d := int(s / 86400) - switch { - case s < 60: - return translator.Get(JustNow) - case s < 120: - return translator.Get(LastMinute) - case s < 3600: - return translator.Get(Minutes, int(diff.Minutes())) - case s < 7200: - return translator.Get(LastHour) - case s < 86400: - return translator.Get(Hours, int(diff.Hours())) - case d == 1: - return translator.Get(Yesterday) - case d < 7: - return translator.Get(Days, d) - case d < 31: - return translator.Get(Weeks, int(math.Ceil(float64(d)/7))) - case d < 365: - return translator.Get(Months, int(math.Ceil(float64(d)/30))) - default: - return translator.Get(Years, int(math.Ceil(float64(d)/365))) - } -} diff --git a/duration/duration_test.go b/duration/duration_test.go deleted file mode 100644 index d1aae21..0000000 --- a/duration/duration_test.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2017 Hervé Gouchet. All rights reserved. -// Use of this source code is governed by the MIT License -// that can be found in the LICENSE file. - -package duration - -import ( - "fmt" - "testing" - "time" - - "github.com/miniflux/miniflux/locale" -) - -func TestElapsedTime(t *testing.T) { - var dt = []struct { - in time.Time - out string - }{ - {time.Time{}, NotYet}, - {time.Now().Add(time.Hour), NotYet}, - {time.Now(), JustNow}, - {time.Now().Add(-time.Minute), LastMinute}, - {time.Now().Add(-time.Minute * 40), fmt.Sprintf(Minutes, 40)}, - {time.Now().Add(-time.Hour), LastHour}, - {time.Now().Add(-time.Hour * 3), fmt.Sprintf(Hours, 3)}, - {time.Now().Add(-time.Hour * 32), Yesterday}, - {time.Now().Add(-time.Hour * 24 * 3), fmt.Sprintf(Days, 3)}, - {time.Now().Add(-time.Hour * 24 * 14), fmt.Sprintf(Weeks, 2)}, - {time.Now().Add(-time.Hour * 24 * 60), fmt.Sprintf(Months, 2)}, - {time.Now().Add(-time.Hour * 24 * 365 * 3), fmt.Sprintf(Years, 3)}, - } - for i, tt := range dt { - if out := ElapsedTime(&locale.Language{}, "Local", tt.in); out != tt.out { - t.Errorf(`%d. content mismatch for "%v": expected=%q got=%q`, i, tt.in, tt.out, out) - } - } -} |