aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--todolist/date_filter.go43
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 {