From 26ec23620d50be79ea664a9095b3653be79e3874 Mon Sep 17 00:00:00 2001 From: Quey-Liang Kao Date: Mon, 14 Aug 2017 15:45:22 +0800 Subject: Implement the "ln" feature: Listing notes of a todo --- todolist/app.go | 4 +++- todolist/formatter.go | 11 +++++++++++ todolist/parser.go | 11 +++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) (limited to 'todolist') diff --git a/todolist/app.go b/todolist/app.go index c2bd66a..4d526c9 100644 --- a/todolist/app.go +++ b/todolist/app.go @@ -143,7 +143,9 @@ func (a *App) ManipulateNotes(input string) { retStr := parser.ParseNotes(todo, input) if retStr != "" { a.Save() - fmt.Println("Notes " + retStr + "ed.") + if retStr != "list" { + fmt.Println("Notes " + retStr + "ed.") + } } } diff --git a/todolist/formatter.go b/todolist/formatter.go index c0f3313..847be04 100644 --- a/todolist/formatter.go +++ b/todolist/formatter.go @@ -43,6 +43,17 @@ func (f *Formatter) Print() { f.Writer.Flush() } +func (f *Formatter) PrintNotes() { + cyan := color.New(color.FgCyan).SprintFunc() + todo := f.GroupedTodos.Groups[""][0] + f.printTodo(todo) + for nid, note := range todo.Notes { + fmt.Fprintf(f.Writer, " %s\t%s\t\n", + cyan(strconv.Itoa(nid)), note) + } + f.Writer.Flush() +} + func (f *Formatter) printTodo(todo *Todo) { yellow := color.New(color.FgYellow) if todo.IsPriority { diff --git a/todolist/parser.go b/todolist/parser.go index 207791d..1c3b7f8 100644 --- a/todolist/parser.go +++ b/todolist/parser.go @@ -84,11 +84,18 @@ func (p *Parser) Contexts(input string) []string { } func (p *Parser) ParseNotes(todo *Todo, input string) string { - r, _ := regexp.Compile(`(\w+) \d+\s+(.*)?`) + r, _ := regexp.Compile(`(\w+) \d+\s*(.*)?`) matches := r.FindStringSubmatch(input) - if matches[1] == "an" { + switch matches[1] { + 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" } fmt.Println("Could not match command or id") -- cgit v1.3