use crate::base::constants::SUPPORTED_EXTENSIONS;
use crate::parser::ParseError;
use std::fs;
use std::path::{Path, PathBuf};
pub fn load_file(path: &PathBuf) -> Result<String, String> {
fs::read_to_string(path).map_err(|e| format!("Failed to read {}: {}", path.display(), e))
}
pub fn validate_extension(path: &Path) -> Result<&str, String> {
let ext = path
.extension()
.and_then(|e| e.to_str())
.ok_or_else(|| format!("Invalid file extension for {}", path.display()))?;
if SUPPORTED_EXTENSIONS.contains(&ext) {
Ok(ext)
} else {
Err(format!("Unsupported file extension: {ext}"))
}
}
pub fn get_extension(path: &Path) -> Result<&str, ParseError> {
let ext = path.extension().and_then(|e| e.to_str());
match ext {
Some(e) if SUPPORTED_EXTENSIONS.contains(&e) => Ok(e),
_ => Err(ParseError::syntax_error("Unsupported file extension", 0, 0)),
}
}