CMDs including QUIT to vars

master
Bel LaPointe 2023-04-07 11:17:02 -06:00
parent a46ebc90e7
commit 0db716e080
1 changed files with 31 additions and 11 deletions

42
main.go
View File

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