use carlotk::prelude::*;
const HEADER: &str = include_str!("latex_header.tex");
const FOOTER: &str = include_str!("latex_footer.tex");
pub fn latex(args: CliArgs) {
let inputfile = args.inputfile.clone();
let debug = args.contains(Flag::Debug);
let mut rl = DefaultEditor::new().unwrap();
let title = match rl.readline("Title >> ") {
Ok (r) => r,
Err (_) => Error::CouldNotReadLine ("Title").throw(),
};
let author = match rl.readline("Author >> ") {
Ok (r) => r,
Err (_) => Error::CouldNotReadLine ("Author").throw(),
};
let mut output = String::new();
let mut outputfile = match inputfile.clone() {
Some (f) => f,
_ => Error::NoInputFile::<&str>.throw(),
};
output.push_str(HEADER);
output.push_str(&format!(
"\\title{{\\textbf{{{}}}}}\n",
title,
));
output.push_str(&format!(
"\\author{{{}}}\n",
author,
));
output.push_str("\\maketitle\n");
output.push_str("\\tableofcontents\n");
let expressions = parse(inputfile, debug);
let mut env = Environment::new();
let latex = env.latex_evaluate(&expressions);
output.push_str(&latex);
output.push_str(FOOTER);
outputfile.set_extension("tex");
let _ = fs::write(&outputfile, output);
println!("\nOutput written to {}", outputfile.display());
}