aboutsummaryrefslogtreecommitdiffstats
path: root/todolist
diff options
context:
space:
mode:
Diffstat (limited to 'todolist')
-rw-r--r--todolist/date_filter.go17
-rw-r--r--todolist/parser.go3
2 files changed, 20 insertions, 0 deletions
diff --git a/todolist/date_filter.go b/todolist/date_filter.go
index b56f117..fb06682 100644
--- a/todolist/date_filter.go
+++ b/todolist/date_filter.go
@@ -45,6 +45,8 @@ func (f *DateFilter) FilterDate(input string) []*Todo {
return f.filterThisWeek(bod(time.Now()))
case match == "due next week":
return f.filterNextWeek(bod(time.Now()))
+ case match == "due last week":
+ return f.filterLastWeek(bod(time.Now()))
case match == "overdue":
return f.filterOverdue(bod(time.Now()))
}
@@ -130,6 +132,21 @@ func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo {
return ret
}
+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
+}
+
func (f *DateFilter) filterOverdue(pivot time.Time) []*Todo {
var ret []*Todo
diff --git a/todolist/parser.go b/todolist/parser.go
index ca5083a..1f070c3 100644
--- a/todolist/parser.go
+++ b/todolist/parser.go
@@ -94,6 +94,9 @@ func (p *Parser) Due(input string, day time.Time) string {
return p.saturday(day)
case "sunday", "sun":
return p.sunday(day)
+ case "last week":
+ n := bod(time.Now())
+ return getNearestMonday(n).AddDate(0, 0, -7).Format("2006-01-02")
case "next week":
n := bod(time.Now())
return getNearestMonday(n).AddDate(0, 0, 7).Format("2006-01-02")