use std::{fs, path::PathBuf};
use crate::Result;
pub trait FileHandler {
fn load(&self, path: &PathBuf) -> Result<String>;
fn save(&self, path: &PathBuf, text: String) -> Result<()>;
}
pub struct TextFileHandler;
impl FileHandler for TextFileHandler {
fn load(&self, path: &PathBuf) -> Result<String> {
Ok(fs::read_to_string(path)?)
}
fn save(&self, path: &PathBuf, text: String) -> Result<()> {
Ok(fs::write(path, text)?)
}
}
pub struct MockFileHandler;
impl FileHandler for MockFileHandler {
fn load(&self, _path: &PathBuf) -> Result<String> {
Ok("".into())
}
fn save(&self, _path: &PathBuf, _text: String) -> Result<()> {
Ok(())
}
}