aboutsummaryrefslogtreecommitdiff
path: root/crates/cli/src
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-06-13 08:11:46 +0200
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-06-13 08:11:46 +0200
commit9549858c7525d3a330d49bd1f8e353d8a9d6eb96 (patch)
tree37e558382be911bc1e6620b0c6d4634db7879b20 /crates/cli/src
parent8c5e5dd0e0aae161c4943e7ff4fe0c93be1c8fb2 (diff)
downloadmihi-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')
-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;