aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Strùˆder <mikezter@gmail.com>2017-04-29 16:31:31 +0200
committerGrant Ammons <gammons@gmail.com>2017-05-09 20:20:24 -0400
commited6ab22cbdbc475adf539637e45a67811ec0c15a (patch)
tree7ffd40d2b716ffa9d85bbbcbcf8242b4c8c4a847
parentaa5050461a30d36a384edd45d20585a89d3da344 (diff)
display an error on malformed input
-rw-r--r--todolist/app.go12
-rw-r--r--todolist/parser.go6
2 files changed, 17 insertions, 1 deletions
diff --git a/todolist/app.go b/todolist/app.go
index 24ebe4d..6d771ef 100644
--- a/todolist/app.go
+++ b/todolist/app.go
@@ -91,6 +91,18 @@ func (a *App) UnarchiveTodo(input string) {
fmt.Println("Todo unarchived.")
}
+func (a *App) EditTodoSubject(input string) {
+ a.Load()
+ _, id, subject := Parser{input}.Parse()
+ id, todo := a.getId(input)
+ if id == -1 {
+ return
+ }
+ todo.Subject = subject
+ a.Save()
+ fmt.Println("Todo subject updated.")
+}
+
func (a *App) EditTodoDue(input string) {
a.Load()
id, todo := a.getId(input)
diff --git a/todolist/parser.go b/todolist/parser.go
index d55ab3b..38bdb7f 100644
--- a/todolist/parser.go
+++ b/todolist/parser.go
@@ -34,10 +34,14 @@ func (p Parser) Parse() (string, int, string) {
input := p.input
r := regexp.MustCompile(`(\w+) (\d+) (.*)`)
matches := r.FindStringSubmatch(input)
+ if len(matches) < 4 {
+ fmt.Println("Could match command, id or subject")
+ return "", -1, input
+ }
id, err := strconv.Atoi(matches[2])
if err != nil {
fmt.Println("Invalid id.")
- id = -1
+ return "", -1, input
}
return matches[1], id, matches[3]