aboutsummaryrefslogtreecommitdiffstats
path: root/todolist
diff options
context:
space:
mode:
authorGrant Ammons <gammons@gmail.com>2017-07-25 16:45:00 -0400
committerGitHub <noreply@github.com>2017-07-25 16:45:00 -0400
commit206fedcf557741cda9ee6db27ee91652db15ad7f (patch)
tree81eb3bad2948df36701c1ba0f27c3185cc2ce75b /todolist
parent024696b7751757d74096214d22a0bf013a9c881f (diff)
parent097a0df526a12e5c99e979b76a7559c44aa83fec (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.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 {