Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions rules/br/deadline.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "mês"), strings.Contains(exponent, "meses"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + num)
}
case strings.Contains(exponent, "ano"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -93,7 +93,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "ano"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + 6)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions rules/br/past_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "mês"), strings.Contains(exponent, "meses"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - num)
}
case strings.Contains(exponent, "ano"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -107,7 +107,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "ano"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - 6)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions rules/en/deadline.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "month"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + num)
}
case strings.Contains(exponent, "year"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -96,7 +96,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "year"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + 6)
}
}
}
Expand Down
24 changes: 24 additions & 0 deletions rules/en/deadline_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/olebedev/when"
"github.com/olebedev/when/rules"
"github.com/olebedev/when/rules/en"
"github.com/stretchr/testify/require"
)

func TestDeadline(t *testing.T) {
Expand All @@ -31,3 +32,26 @@ func TestDeadline(t *testing.T) {

ApplyFixtures(t, "en.Deadline", w, fixt)
}

func TestDeadlineMonthsCrossYear(t *testing.T) {
ref := time.Date(2016, time.October, 6, 0, 0, 0, 0, time.UTC)
fixt := []struct {
text string
want time.Time
}{
{"in 2 months", time.Date(2016, time.December, 6, 0, 0, 0, 0, time.UTC)},
{"in 3 months", time.Date(2017, time.January, 6, 0, 0, 0, 0, time.UTC)},
{"in 14 months", time.Date(2017, time.December, 6, 0, 0, 0, 0, time.UTC)},
{"within half a year", time.Date(2017, time.April, 6, 0, 0, 0, 0, time.UTC)},
}

w := when.New(nil)
w.Add(en.Deadline(rules.Skip))

for _, f := range fixt {
res, err := w.Parse(f.text, ref)
require.Nil(t, err, f.text)
require.NotNil(t, res, f.text)
require.True(t, f.want.Equal(res.Time), "%s: got %s", f.text, res.Time)
}
}
4 changes: 2 additions & 2 deletions rules/en/past_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "month"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - num)
}
case strings.Contains(exponent, "year"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -96,7 +96,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "year"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - 6)
}
}
}
Expand Down
23 changes: 23 additions & 0 deletions rules/en/past_time_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/olebedev/when"
"github.com/olebedev/when/rules"
"github.com/olebedev/when/rules/en"
"github.com/stretchr/testify/require"
)

func TestPastTime(t *testing.T) {
Expand All @@ -31,3 +32,25 @@ func TestPastTime(t *testing.T) {

ApplyFixtures(t, "en.PastTime", w, fixt)
}

func TestPastTimeMonthsCrossYear(t *testing.T) {
ref := time.Date(2016, time.February, 6, 0, 0, 0, 0, time.UTC)
fixt := []struct {
text string
want time.Time
}{
{"2 months ago", time.Date(2015, time.December, 6, 0, 0, 0, 0, time.UTC)},
{"14 months ago", time.Date(2014, time.December, 6, 0, 0, 0, 0, time.UTC)},
{"half a year ago", time.Date(2015, time.August, 6, 0, 0, 0, 0, time.UTC)},
}

w := when.New(nil)
w.Add(en.PastTime(rules.Skip))

for _, f := range fixt {
res, err := w.Parse(f.text, ref)
require.Nil(t, err, f.text)
require.NotNil(t, res, f.text)
require.True(t, f.want.Equal(res.Time), "%s: got %s", f.text, res.Time)
}
}
4 changes: 2 additions & 2 deletions rules/nl/deadline.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "maand"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + num)
}
case strings.Contains(exponent, "jaar"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -95,7 +95,7 @@ func Deadline(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "jaar"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) + 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + 6)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions rules/nl/past_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "maand"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - num)
}
case strings.Contains(exponent, "jaar"):
if c.Year == nil || overwrite {
Expand Down Expand Up @@ -96,7 +96,7 @@ func PastTime(s rules.Strategy) rules.Rule {
}
case strings.Contains(exponent, "jaar"):
if c.Month == nil || overwrite {
c.Month = pointer.ToInt((int(ref.Month()) - 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) - 6)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions rules/ru/deadline.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func Deadline(s rules.Strategy) rules.Rule {
case strings.Contains(exponent, "недел"):
c.Duration = time.Duration(num) * 7 * 24 * time.Hour
case strings.Contains(exponent, "месяц"):
c.Month = pointer.ToInt((int(ref.Month()) + num) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + num)
case strings.Contains(exponent, "год") || strings.Contains(exponent, "лет"):
c.Year = pointer.ToInt(ref.Year() + num)
}
Expand All @@ -76,7 +76,7 @@ func Deadline(s rules.Strategy) rules.Rule {
// 2 weeks
c.Duration = 14 * 24 * time.Hour
case strings.Contains(exponent, "год") || strings.Contains(exponent, "лет"):
c.Month = pointer.ToInt((int(ref.Month()) + 6) % 12)
c.Month = pointer.ToInt(int(ref.Month()) + 6)
}
}

Expand Down