aboutsummaryrefslogtreecommitdiffstats
path: root/todolist
diff options
context:
space:
mode:
authorQuey-Liang Kao <s101062801@m101.nthu.edu.tw>2017-08-14 16:12:53 +0800
committerQuey-Liang Kao <s101062801@m101.nthu.edu.tw>2017-08-14 16:12:53 +0800
commitc4d6dbdb100bb66db9b184c653617c47a63e91ca (patch)
tree73555a8af7496a5af47b9257037fd327fe7a279f /todolist
parent26ec23620d50be79ea664a9095b3653be79e3874 (diff)
Implement the "dn" feature: Deleteing notes
Diffstat (limited to 'todolist')
-rw-r--r--todolist/parser.go17
-rw-r--r--todolist/parser_test.go7
2 files changed, 24 insertions, 0 deletions
diff --git a/todolist/parser.go b/todolist/parser.go
index 1c3b7f8..3883454 100644
--- a/todolist/parser.go
+++ b/todolist/parser.go
@@ -90,12 +90,29 @@ func (p *Parser) ParseNotes(todo *Todo, input string) string {
case "an":
todo.Notes = append(todo.Notes, matches[2])
return "add"
+
case "ln":
groups := map[string][]*Todo{}
groups[""] = append(groups[""], todo)
formatter := NewFormatter(&GroupedTodos{Groups: groups})
formatter.PrintNotes()
return "list"
+
+ case "dn":
+ rmid, err := strconv.Atoi(matches[2])
+ if err != nil {
+ fmt.Println("wrong note id")
+ return ""
+ }
+
+ for id, _ := range todo.Notes {
+ if id == rmid {
+ todo.Notes = append(todo.Notes[:rmid], todo.Notes[rmid+1:]...)
+ return "delete"
+ }
+ }
+ fmt.Println("Could not found note id")
+ return ""
}
fmt.Println("Could not match command or id")
diff --git a/todolist/parser_test.go b/todolist/parser_test.go
index 9412bdf..e5c7007 100644
--- a/todolist/parser_test.go
+++ b/todolist/parser_test.go
@@ -84,6 +84,13 @@ func TestParseNotes(t *testing.T) {
if todo.Notes[0] != "www.google.com" {
t.Error("Expected note 1 to be 'www.google.com' but got", todo.Notes[0])
}
+
+ if parser.ParseNotes(todo, "dn 1 0") != "delete" {
+ t.Error("Expected Notes to be deleted")
+ }
+ if len(todo.Notes) != 0 {
+ t.Error("Expected no note")
+ }
}
func TestDueToday(t *testing.T) {