diff options
| -rw-r--r-- | todolist/date_filter.go | 20 | ||||
| -rw-r--r-- | todolist/date_filter_test.go | 4 |
2 files changed, 14 insertions, 10 deletions
diff --git a/todolist/date_filter.go b/todolist/date_filter.go index cccd869..a43e3c8 100644 --- a/todolist/date_filter.go +++ b/todolist/date_filter.go @@ -14,6 +14,10 @@ func NewDateFilter(todos []*Todo) *DateFilter { return &DateFilter{Todos: todos, Location: time.Now().Location()} } +func filterOnDue(todo *Todo) string { + return todo.Due +} + func (f *DateFilter) FilterDate(input string) []*Todo { agendaRegex, _ := regexp.Compile(`agenda.*$`) if agendaRegex.MatchString(input) { @@ -24,9 +28,9 @@ func (f *DateFilter) FilterDate(input string) []*Todo { match := r.FindString(input) switch { case match == "due tod" || match == "due today": - return f.filterToday(bod(time.Now())) + return f.filterDueToday(bod(time.Now())) case match == "due tom" || match == "due tomorrow": - return f.filterTomorrow(bod(time.Now())) + return f.filterDueTomorrow(bod(time.Now())) case match == "due sun" || match == "due sunday": return f.filterDay(bod(time.Now()), time.Sunday) case match == "due mon" || match == "due monday": @@ -68,23 +72,23 @@ func (f *DateFilter) filterAgenda(pivot time.Time) []*Todo { return ret } -func (f *DateFilter) filterToExactDate(pivot time.Time) []*Todo { +func (f *DateFilter) filterToExactDate(pivot time.Time, filterOn func(*Todo) string) []*Todo { var ret []*Todo for _, todo := range f.Todos { - if todo.Due == pivot.Format("2006-01-02") { + if filterOn(todo) == pivot.Format("2006-01-02") { ret = append(ret, todo) } } return ret } -func (f *DateFilter) filterToday(pivot time.Time) []*Todo { - return f.filterToExactDate(pivot) +func (f *DateFilter) filterDueToday(pivot time.Time) []*Todo { + return f.filterToExactDate(pivot, filterOnDue) } -func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { +func (f *DateFilter) filterDueTomorrow(pivot time.Time) []*Todo { pivot = pivot.AddDate(0, 0, 1) - return f.filterToExactDate(pivot) + return f.filterToExactDate(pivot, filterOnDue) } func (f *DateFilter) filterDay(pivot time.Time, day time.Weekday) []*Todo { diff --git a/todolist/date_filter_test.go b/todolist/date_filter_test.go index 6dd88f6..a89e27f 100644 --- a/todolist/date_filter_test.go +++ b/todolist/date_filter_test.go @@ -17,7 +17,7 @@ func TestFilterToday(t *testing.T) { todos = append(todos, tomorrowTodo) filter := NewDateFilter(todos) - filtered := filter.filterToday(time.Now()) + filtered := filter.filterDueToday(time.Now()) assert.Equal(1, len(filtered)) assert.Equal(1, filtered[0].Id) @@ -33,7 +33,7 @@ func TestFilterTomorrow(t *testing.T) { todos = append(todos, tomorrowTodo) filter := NewDateFilter(todos) - filtered := filter.filterTomorrow(time.Now()) + filtered := filter.filterDueTomorrow(time.Now()) assert.Equal(1, len(filtered)) assert.Equal(2, filtered[0].Id) |
