aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuey-Liang Kao <s101062801@m101.nthu.edu.tw>2017-01-20 12:41:26 -0600
committerGitHub <noreply@github.com>2017-01-20 12:41:26 -0600
commit994709884e05d803e34578d74893e5e1c20da417 (patch)
tree2220fdab2a567b4c50b3f02a01f4722907408a35
parent9edce9ad2c7cca5dc60cff8ce45a9855ab719365 (diff)
parent4e3392b57cb371b4d25042252bacd121be853b24 (diff)
Merge pull request #23 from NonerKao/pr/fix-getid
Reduce the duplication during ID checking
-rw-r--r--todolist/app.go94
1 files changed, 46 insertions, 48 deletions
diff --git a/todolist/app.go b/todolist/app.go
index 45b9812..58b4801 100644
--- a/todolist/app.go
+++ b/todolist/app.go
@@ -37,76 +37,69 @@ 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.")
- } else {
- fmt.Println("Could not find id.")
+ id, _ := a.getId(input)
+ 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.")
- } else {
- fmt.Println("Could not find id.")
+ id, _ := a.getId(input)
+ 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.")
- } else {
- fmt.Println("Could not find id.")
+ id, _ := a.getId(input)
+ 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.")
- } else {
- fmt.Println("Could not find id.")
+ id, _ := a.getId(input)
+ 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.")
- } else {
- fmt.Println("Could not find id.")
+ id, _ := a.getId(input)
+ if id == -1 {
+ return
}
+ a.TodoList.Unarchive(id)
+ a.Save()
+ fmt.Println("Todo unarchived.")
}
func (a *App) EditTodoDue(input string) {
a.Load()
- id := 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.")
+ id, todo := a.getId(input)
+ 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() {
@@ -129,14 +122,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
}
}