pub use mortar_compiler::*;
pub mod cli {
use crate::{FileHandler, ParseHandler, Serializer};
pub fn compile_file(input_path: &str, output_path: Option<&str>) -> Result<(), String> {
compile_file_with_format(input_path, output_path, false)
}
pub fn compile_file_with_format(
input_path: &str,
output_path: Option<&str>,
pretty: bool,
) -> Result<(), String> {
let content = FileHandler::read_source_file(input_path)
.map_err(|err| format!("Failed to read input file: {}", err))?;
let program = ParseHandler::parse_source_code(&content, false)
.map_err(|err| format!("Parse error: {}", err))?;
let output_path = output_path.unwrap_or(input_path);
Serializer::save_to_file(&program, output_path, pretty)
.map_err(|err| format!("Failed to generate .mortared file: {}", err))?;
Ok(())
}
}
pub mod lsp {
pub use mortar_lsp::*;
}
pub mod prelude {
pub use crate::*;
}