From 244fc903cd6890bab1ece12e04c6d69262067d73 Mon Sep 17 00:00:00 2001 From: Koza Date: Tue, 30 Aug 2022 14:25:01 +0200 Subject: [PATCH] fix(watch): make sure watch doesn't skip not passing exercises if you change a previous one --- src/main.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8eebc086..96b63f04 100644 --- a/src/main.rs +++ b/src/main.rs @@ -373,10 +373,20 @@ fn watch(exercises: &[Exercise], verbose: bool) -> notify::Result { .into_iter() .chain( exercises - .iter() - .filter(|e| !e.looks_done() && !filepath.ends_with(&e.path)), + .into_iter() + .take_while(|e| !filepath.ends_with(&e.path)) + .filter(|e| !e.looks_done()), + ) + .chain( + exercises + .into_iter() + .skip_while(|e| !filepath.ends_with(&e.path)), ); - let num_done = exercises.iter().filter(|e| e.looks_done()).count(); + let num_done = exercises + .iter() + .take_while(|e| !filepath.ends_with(&e.path)) + .filter(|e| e.looks_done()) + .count(); clear_screen(); match verify(pending_exercises, (num_done, exercises.len()), verbose) { Ok(_) => return Ok(WatchStatus::Finished),