From b4cc152c778c9f21f1e0a151b9d29760fbbf1476 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Thu, 29 Jan 2026 22:30:58 +0100 Subject: exercises: simplify the kind MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As for now, all exercises I have follow the same pattern and there can be multiple workflows that can fit to it. Yes, maybe in the future it might be interesting to add other kinds of exercises, but for now I'm good and we can keep things simple. Signed-off-by: Miquel Sabaté Solà --- crates/cli/src/exercises.rs | 15 +-------------- crates/cli/src/run.rs | 21 ++++++++++----------- lib/mihi/src/exercise.rs | 22 +++++----------------- 3 files changed, 16 insertions(+), 42 deletions(-) diff --git a/crates/cli/src/exercises.rs b/crates/cli/src/exercises.rs index ef89a0c..8cac7b0 100644 --- a/crates/cli/src/exercises.rs +++ b/crates/cli/src/exercises.rs @@ -37,19 +37,6 @@ fn ask_for_exercise_based_on(exercise: Exercise) -> Result { return Err("the title is required".to_string()); } - let kinds = vec![ - ExerciseKind::Pensum, - ExerciseKind::Translation, - ExerciseKind::Transformation, - ExerciseKind::Numerical, - ]; - let Ok(kind) = Select::new("Kind:", kinds) - .with_starting_cursor(exercise.kind as usize) - .prompt() - else { - return Err("abort!".to_string()); - }; - let Ok(enunciate) = Editor::new("Enunciate:") .with_predefined_text(&exercise.enunciate) .with_file_extension(".md") @@ -89,7 +76,7 @@ fn ask_for_exercise_based_on(exercise: Exercise) -> Result { enunciate, solution, lessons, - kind, + kind: ExerciseKind::Simple, }) } diff --git a/crates/cli/src/run.rs b/crates/cli/src/run.rs index 86136aa..5f06870 100644 --- a/crates/cli/src/run.rs +++ b/crates/cli/src/run.rs @@ -508,18 +508,17 @@ fn run_exercises(exercises: Vec) -> bool { } for exercise in exercises { - let Ok(solution) = Editor::new( - format!("Exercise '{}' (kind: {}):", exercise.title, exercise.kind).as_str(), - ) - .with_predefined_text( - format!( - "---Enunciate: {}\n{}\n---!", - exercise.title, exercise.enunciate + let Ok(solution) = Editor::new(format!("Exercise '{}':", exercise.title).as_str()) + .with_predefined_text( + format!( + "---Enunciate: {}\n{}\n---!", + exercise.title, exercise.enunciate + ) + .as_str(), ) - .as_str(), - ) - .with_file_extension(".md") - .prompt() else { + .with_file_extension(".md") + .prompt() + else { return false; }; diff --git a/lib/mihi/src/exercise.rs b/lib/mihi/src/exercise.rs index 10fada1..5f45079 100644 --- a/lib/mihi/src/exercise.rs +++ b/lib/mihi/src/exercise.rs @@ -5,19 +5,13 @@ use rusqlite::params; #[derive(Clone, Copy, Debug, Default)] pub enum ExerciseKind { #[default] - Pensum = 0, - Translation, - Transformation, - Numerical, + Simple = 0, } impl std::fmt::Display for ExerciseKind { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { - Self::Pensum => write!(f, "Pensum"), - Self::Translation => write!(f, "Translation"), - Self::Transformation => write!(f, "Transformation"), - Self::Numerical => write!(f, "Numerical"), + Self::Simple => write!(f, "Simple"), } } } @@ -27,10 +21,7 @@ impl TryFrom for ExerciseKind { fn try_from(value: isize) -> Result { match value { - 0 => Ok(Self::Pensum), - 1 => Ok(Self::Translation), - 2 => Ok(Self::Transformation), - 3 => Ok(Self::Numerical), + 0 => Ok(Self::Simple), _ => Err("unknonwn exercise kind"), } } @@ -41,11 +32,8 @@ impl TryFrom<&str> for ExerciseKind { fn try_from(value: &str) -> Result { match value { - "pensum" => Ok(Self::Pensum), - "translation" => Ok(Self::Translation), - "transformation" => Ok(Self::Transformation), - "numerical" => Ok(Self::Numerical), - _ => Err("unknonwn exercise kind. Available: pensum, translation, transformation and numerical"), + "simple" => Ok(Self::Simple), + _ => Err("unknonwn exercise kind. Available: simple"), } } } -- cgit v1.2.3