diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-06-13 08:11:46 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-06-13 08:11:46 +0200 |
| commit | 9549858c7525d3a330d49bd1f8e353d8a9d6eb96 (patch) | |
| tree | 37e558382be911bc1e6620b0c6d4634db7879b20 /crates/cli/src/run.rs | |
| parent | 8c5e5dd0e0aae161c4943e7ff4fe0c93be1c8fb2 (diff) | |
| download | mihi-9549858c7525d3a330d49bd1f8e353d8a9d6eb96.tar.gz mihi-9549858c7525d3a330d49bd1f8e353d8a9d6eb96.zip | |
Add steps into words
This is a way to make more granular the accounting of successful runs,
so we don't give a word for done until we have run it successfully at
least MAX_STEPS times in a row.
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'crates/cli/src/run.rs')
| -rw-r--r-- | crates/cli/src/run.rs | 12 |
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; |
