use std::{
fs, io,
path::{Path, PathBuf},
};
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SourceState {
content: String,
source_path: Option<PathBuf>,
}
impl SourceState {
pub fn set_source_string(&mut self, content: impl Into<String>) {
self.content = content.into();
self.source_path = None;
}
pub fn set_source_file(&mut self, path: impl AsRef<Path>) -> io::Result<()> {
let path = path.as_ref();
self.content = fs::read_to_string(path)?;
self.source_path = Some(path.to_path_buf());
Ok(())
}
pub fn content(&self) -> &str {
&self.content
}
pub fn source_path(&self) -> Option<&Path> {
self.source_path.as_deref()
}
}