summaryrefslogtreecommitdiff
path: root/src/exercise.rs
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-04-07 22:43:59 +0200
committermo8it <mo8it@proton.me>2024-04-07 22:43:59 +0200
commit99c9ab467b3e57f9dca080a6fe9c1dbd991a3fdb (patch)
treee3fe5f15a35f7007ebfff49c2e5030fa7c1caf02 /src/exercise.rs
parentdb43efe3ec9d0bba5ee997923d68d2356b08a257 (diff)
Implement resetting
Diffstat (limited to 'src/exercise.rs')
-rw-r--r--src/exercise.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/exercise.rs b/src/exercise.rs
index d01d427..508f477 100644
--- a/src/exercise.rs
+++ b/src/exercise.rs
@@ -10,7 +10,7 @@ use winnow::ascii::{space0, Caseless};
use winnow::combinator::opt;
use winnow::Parser;
-use crate::embedded::EMBEDDED_FILES;
+use crate::embedded::{WriteStrategy, EMBEDDED_FILES};
// The number of context lines above and below a highlighted line.
const CONTEXT: usize = 2;
@@ -220,6 +220,12 @@ impl Exercise {
pub fn looks_done(&self) -> Result<bool> {
self.state().map(|state| state == State::Done)
}
+
+ pub fn reset(&self) -> Result<()> {
+ EMBEDDED_FILES
+ .write_exercise_to_disk(&self.path, WriteStrategy::Overwrite)
+ .with_context(|| format!("Failed to reset the exercise {self}"))
+ }
}
impl Display for Exercise {