diff options
| author | Grant Ammons <gammons@gmail.com> | 2017-07-25 16:45:00 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-25 16:45:00 -0400 |
| commit | 206fedcf557741cda9ee6db27ee91652db15ad7f (patch) | |
| tree | 81eb3bad2948df36701c1ba0f27c3185cc2ce75b /todolist | |
| parent | 024696b7751757d74096214d22a0bf013a9c881f (diff) | |
| parent | 097a0df526a12e5c99e979b76a7559c44aa83fec (diff) | |
Merge pull request #76 from stuartskelton/remove_some_redundancy_in_date_filter
Remove some redundancy in date filter
Diffstat (limited to 'todolist')
| -rw-r--r-- | todolist/date_filter.go | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/todolist/date_filter.go b/todolist/date_filter.go index 8d64484..5a40e27 100644 --- a/todolist/date_filter.go +++ b/todolist/date_filter.go @@ -68,7 +68,7 @@ func (f *DateFilter) filterAgenda(pivot time.Time) []*Todo { return ret } -func (f *DateFilter) filterToday(pivot time.Time) []*Todo { +func (f *DateFilter) filterToExactDate(pivot time.Time) []*Todo { var ret []*Todo for _, todo := range f.Todos { if todo.Due == pivot.Format("2006-01-02") { @@ -78,6 +78,10 @@ func (f *DateFilter) filterToday(pivot time.Time) []*Todo { return ret } +func (f *DateFilter) filterToday(pivot time.Time) []*Todo { + return f.filterToExactDate(pivot) +} + func (f *DateFilter) filterDay(pivot time.Time, day time.Weekday) []*Todo { var ret []*Todo filtered := f.filterThisWeek(pivot) @@ -92,10 +96,16 @@ func (f *DateFilter) filterDay(pivot time.Time, day time.Weekday) []*Todo { } func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { - var ret []*Todo pivot = pivot.AddDate(0, 0, 1) + return f.filterToExactDate(pivot) +} + +func (f *DateFilter) filterBetweenDatesInclusive(begin, end time.Time) []*Todo { + var ret []*Todo + for _, todo := range f.Todos { - if todo.Due == pivot.Format("2006-01-02") { + dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) + if (begin.Before(dueTime) || begin.Equal(dueTime)) && end.After(dueTime) { ret = append(ret, todo) } } @@ -103,14 +113,19 @@ func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { } func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := bod(f.FindSunday(pivot)) end := begin.AddDate(0, 0, 7) + return f.filterBetweenDatesInclusive(begin, end) +} + +func (f *DateFilter) filterBetweenDatesExclusive(begin, end time.Time) []*Todo { + var ret []*Todo + for _, todo := range f.Todos { dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if (begin.Before(dueTime) || begin.Equal(dueTime)) && end.After(dueTime) { + if begin.Before(dueTime) && end.After(dueTime) { ret = append(ret, todo) } } @@ -118,33 +133,19 @@ func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { } func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := f.FindSunday(pivot).AddDate(0, 0, 7) end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { - dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if begin.Before(dueTime) && end.After(dueTime) { - ret = append(ret, todo) - } - } - return ret + return f.filterBetweenDatesExclusive(begin, end) } func (f *DateFilter) filterLastWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := f.FindSunday(pivot).AddDate(0, 0, -7) end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { - dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if begin.Before(dueTime) && end.After(dueTime) { - ret = append(ret, todo) - } - } - return ret + return f.filterBetweenDatesExclusive(begin, end) } func (f *DateFilter) filterOverdue(pivot time.Time) []*Todo { |
