diff --git a/main.go b/main.go index 2e2aace..a8b1ad9 100644 --- a/main.go +++ b/main.go @@ -38,6 +38,13 @@ type ( Renderable string ) +var ( + CMD_PASS = "y" + CMD_FAIL = "n" + CMD_SKIP = "s" + CMD_QUIT = "q" +) + func main() { if err := Main(); err != nil { panic(err) @@ -59,7 +66,9 @@ func Main() error { for i := len(failed) - 1; i >= 0; i-- { if _, passed, err := ReviewQ(db, user, failed[i]); err != nil { return err - } else if passed != "n" { + } else if passed == CMD_PASS { + return nil + } else if passed != CMD_FAIL { failed = append(failed[:i], failed[i+1:]...) } } @@ -79,12 +88,14 @@ func Review(db DB, user IDU) ([]IDQ, error) { return nil, err } switch passed { - case "n": + case CMD_QUIT: + return nil, nil + case CMD_FAIL: failed = append(failed, q) if err := db.PushAnswer(user, q, Renderable(response), false); err != nil { return nil, err } - case "y": + case CMD_PASS: if err := db.PushAnswer(user, q, Renderable(response), true); err != nil { return nil, err } @@ -105,7 +116,9 @@ func ReviewQ(db DB, user IDU, q IDQ) (string, string, error) { fmt.Printf("> /clue for a clue\n") } response = readline() - if response != "/clue" { + switch response { + case "/clue": + default: break } fmt.Printf("> %s", question.Clues[i]) @@ -121,14 +134,21 @@ func ReviewQ(db DB, user IDU, q IDQ) (string, string, error) { } else if lastAnswer := db.Answer(id); lastAnswer.A != "" { fmt.Printf("> Last time, you responded:\n\t%s\n", lastAnswer.A) } - fmt.Printf("> Did you pass this time? [Yns]\n") - switch readline() { - case "s": - return response, "s", nil - case "n": - return response, "n", nil + fmt.Printf("> Did you pass this time? [%s%s%s%s]\n", + strings.ToUpper(CMD_PASS), + strings.ToLower(CMD_FAIL), + strings.ToLower(CMD_SKIP), + strings.ToLower(CMD_QUIT), + ) + switch strings.ToLower(readline()) { + case CMD_SKIP: + return response, CMD_SKIP, nil + case CMD_FAIL: + return response, CMD_FAIL, nil + case CMD_QUIT: + return response, CMD_QUIT, nil } - return response, "y", nil + return response, CMD_PASS, nil } func readline() string {