From 2976acd639b57853df315f80172b61ff75b9d7f3 Mon Sep 17 00:00:00 2001 From: Stuart Skelton Date: Sun, 6 Aug 2017 21:40:19 +0100 Subject: Allow for ranged ids in some commands --- todolist/todo_list.go | 110 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 37 deletions(-) (limited to 'todolist/todo_list.go') diff --git a/todolist/todo_list.go b/todolist/todo_list.go index 4623a22..dc3add4 100644 --- a/todolist/todo_list.go +++ b/todolist/todo_list.go @@ -15,57 +15,93 @@ func (t *TodoList) Add(todo *Todo) { t.Data = append(t.Data, todo) } -func (t *TodoList) Delete(id int) { - i := -1 - for index, todo := range t.Data { - if todo.Id == id { - i = index +func (t *TodoList) Delete(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + break + } + i := -1 + for index, todo := range t.Data { + if todo.Id == id { + i = index + } } - } - t.Data = append(t.Data[:i], t.Data[i+1:]...) + t.Data = append(t.Data[:i], t.Data[i+1:]...) + } } -func (t *TodoList) Complete(id int) { - todo := t.FindById(id) - todo.Complete() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Complete(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Complete() + t.Delete(id) + t.Data = append(t.Data, todo) + } } -func (t *TodoList) Uncomplete(id int) { - todo := t.FindById(id) - todo.Uncomplete() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Uncomplete(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Uncomplete() + t.Delete(id) + t.Data = append(t.Data, todo) + } } -func (t *TodoList) Archive(id int) { - todo := t.FindById(id) - todo.Archive() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Archive(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Archive() + t.Delete(id) + t.Data = append(t.Data, todo) + } } -func (t *TodoList) Unarchive(id int) { - todo := t.FindById(id) - todo.Unarchive() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Unarchive(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Unarchive() + t.Delete(id) + t.Data = append(t.Data, todo) + } } -func (t *TodoList) Prioritize(id int) { - todo := t.FindById(id) - todo.Prioritize() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Prioritize(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Prioritize() + t.Delete(id) + t.Data = append(t.Data, todo) + } } -func (t *TodoList) Unprioritize(id int) { - todo := t.FindById(id) - todo.Unprioritize() - t.Delete(id) - t.Data = append(t.Data, todo) +func (t *TodoList) Unprioritize(ids ...int) { + for _, id := range ids { + todo := t.FindById(id) + if todo == nil { + continue + } + todo.Unprioritize() + t.Delete(id) + t.Data = append(t.Data, todo) + } } func (t *TodoList) IndexOf(todoToFind *Todo) int { -- cgit v1.3 From d435ab85b203765e27b165d47e6155a73d84034c Mon Sep 17 00:00:00 2001 From: Stuart Skelton Date: Tue, 8 Aug 2017 16:11:37 +0100 Subject: Swap a break for a continue. --- todolist/todo_list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'todolist/todo_list.go') diff --git a/todolist/todo_list.go b/todolist/todo_list.go index dc3add4..55c250d 100644 --- a/todolist/todo_list.go +++ b/todolist/todo_list.go @@ -19,7 +19,7 @@ func (t *TodoList) Delete(ids ...int) { for _, id := range ids { todo := t.FindById(id) if todo == nil { - break + continue } i := -1 for index, todo := range t.Data { -- cgit v1.3