From 26fb5e2bab2becf4bfddac250f3604205a2114aa Mon Sep 17 00:00:00 2001 From: Quey-Liang Kao Date: Mon, 16 Jan 2017 17:27:57 +0800 Subject: Implement the ID checking in getID() --- todolist/app.go | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/todolist/app.go b/todolist/app.go index 7644d46..19eed08 100644 --- a/todolist/app.go +++ b/todolist/app.go @@ -37,75 +37,62 @@ func (a *App) AddTodo(input string) { func (a *App) DeleteTodo(input string) { a.Load() - id := a.getId(input) + id, _ := a.getId(input) if id != -1 { a.TodoList.Delete(id) a.Save() fmt.Println("Todo deleted.") - } else { - fmt.Println("Could not find id.") } } func (a *App) CompleteTodo(input string) { a.Load() - id := a.getId(input) + id, _ := a.getId(input) if id != -1 { a.TodoList.Complete(id) a.Save() fmt.Println("Todo completed.") - } else { - fmt.Println("Could not find id.") } } func (a *App) UncompleteTodo(input string) { a.Load() - id := a.getId(input) + id, _ := a.getId(input) if id != -1 { a.TodoList.Uncomplete(id) a.Save() fmt.Println("Todo uncompleted.") - } else { - fmt.Println("Could not find id.") } } func (a *App) ArchiveTodo(input string) { a.Load() - id := a.getId(input) + id, _ := a.getId(input) if id != -1 { a.TodoList.Archive(id) a.Save() fmt.Println("Todo archived.") - } else { - fmt.Println("Could not find id.") } } func (a *App) UnarchiveTodo(input string) { a.Load() - id := a.getId(input) + id, _ := a.getId(input) if id != -1 { a.TodoList.Unarchive(id) a.Save() fmt.Println("Todo unarchived.") - } else { - fmt.Println("Could not find id.") } } func (a *App) EditTodoDue(input string) { a.Load() - id := a.getId(input) + id, todo := a.getId(input) if id != -1 { - todo := a.TodoList.FindById(id) parser := &Parser{} todo.Due = parser.Due(input, time.Now()) a.Save() fmt.Println("Todo due date updated.") - } else { - fmt.Println("Could not find id.") } } @@ -129,14 +116,19 @@ func (a *App) ListTodos(input string) { formatter.Print() } -func (a *App) getId(input string) int { - +func (a *App) getId(input string) (int, *Todo) { re, _ := regexp.Compile("\\d+") if re.MatchString(input) { id, _ := strconv.Atoi(re.FindString(input)) - return id + todo := a.TodoList.FindById(id) + if todo == nil { + fmt.Println("No such id.") + return -1, nil + } + return id, todo } else { - return -1 + fmt.Println("Invalid id.") + return -1, nil } } -- cgit v1.3 From 4e3392b57cb371b4d25042252bacd121be853b24 Mon Sep 17 00:00:00 2001 From: Quey-Liang Kao Date: Sat, 21 Jan 2017 00:41:42 +0800 Subject: Refine error handling --- todolist/app.go | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/todolist/app.go b/todolist/app.go index e09875f..58b4801 100644 --- a/todolist/app.go +++ b/todolist/app.go @@ -38,62 +38,68 @@ func (a *App) AddTodo(input string) { func (a *App) DeleteTodo(input string) { a.Load() id, _ := a.getId(input) - if id != -1 { - a.TodoList.Delete(id) - a.Save() - fmt.Println("Todo deleted.") + if id == -1 { + return } + a.TodoList.Delete(id) + a.Save() + fmt.Println("Todo deleted.") } func (a *App) CompleteTodo(input string) { a.Load() id, _ := a.getId(input) - if id != -1 { - a.TodoList.Complete(id) - a.Save() - fmt.Println("Todo completed.") + if id == -1 { + return } + a.TodoList.Complete(id) + a.Save() + fmt.Println("Todo completed.") } func (a *App) UncompleteTodo(input string) { a.Load() id, _ := a.getId(input) - if id != -1 { - a.TodoList.Uncomplete(id) - a.Save() - fmt.Println("Todo uncompleted.") + if id == -1 { + return } + a.TodoList.Uncomplete(id) + a.Save() + fmt.Println("Todo uncompleted.") } func (a *App) ArchiveTodo(input string) { a.Load() id, _ := a.getId(input) - if id != -1 { - a.TodoList.Archive(id) - a.Save() - fmt.Println("Todo archived.") + if id == -1 { + return } + a.TodoList.Archive(id) + a.Save() + fmt.Println("Todo archived.") } func (a *App) UnarchiveTodo(input string) { a.Load() id, _ := a.getId(input) - if id != -1 { - a.TodoList.Unarchive(id) - a.Save() - fmt.Println("Todo unarchived.") + if id == -1 { + return } + a.TodoList.Unarchive(id) + a.Save() + fmt.Println("Todo unarchived.") } func (a *App) EditTodoDue(input string) { a.Load() id, todo := a.getId(input) - if id != -1 { - parser := &Parser{} - todo.Due = parser.Due(input, time.Now()) - a.Save() - fmt.Println("Todo due date updated.") + if id == -1 { + return } + parser := &Parser{} + todo.Due = parser.Due(input, time.Now()) + a.Save() + fmt.Println("Todo due date updated.") } func (a *App) ArchiveCompleted() { -- cgit v1.3