aboutsummaryrefslogtreecommitdiff
path: root/crates/cli
diff options
context:
space:
mode:
Diffstat (limited to 'crates/cli')
-rw-r--r--crates/cli/src/run.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/crates/cli/src/run.rs b/crates/cli/src/run.rs
index fe193b9..0cce6d6 100644
--- a/crates/cli/src/run.rs
+++ b/crates/cli/src/run.rs
@@ -1,6 +1,10 @@
use inquire::Text;
use mihi::{select_random_words, update_success, Category, Word};
+// Maximum number of times a word has to be run in order to increase the number
+// of successful runs.
+const MAX_STEPS: usize = 5;
+
fn help(msg: Option<&str>) {
if msg.is_some() {
println!("{}.\n", msg.unwrap());
@@ -56,11 +60,15 @@ fn run_words(words: Vec<Word>, locale: Locale) -> i32 {
let found = !answer.is_empty() && tr.split(',').any(|tr| tr.trim().contains(&answer));
if found {
- let _ = update_success(&word, word.succeeded + 1);
+ if word.steps == MAX_STEPS - 1 {
+ let _ = update_success(&word, word.succeeded + 1, 0);
+ } else {
+ let _ = update_success(&word, word.succeeded, word.steps + 1);
+ }
println!("\x1b[92m✓ {}\x1b[0m", tr);
} else {
if word.succeeded > 0 {
- let _ = update_success(&word, word.succeeded - 1);
+ let _ = update_success(&word, word.succeeded - 1, 0);
}
println!("\x1b[91m❌{}\x1b[0m", tr);
errors += 1;