use carlotk::prelude::*;
const HELP: &str = include_str!("../help_repl.txt");
pub fn helpme() {
printhelp(HELP);
}
pub fn repl(args: CliArgs) {
if args.contains(Flag::Help) {
printhelp(HELP);
}
let inputfile = args.inputfile.clone();
let debug = args.contains(Flag::Debug);
let mut i = 0;
println!("{}", "The Carlo Language".truecolor(20, 146, 255).bold());
println!("Version {}", VERSION);
println!("Developed by Hobbs Bros.");
println!();
let parser = Parser::new(debug);
let mut env = Environment::new();
if let Some(i) = &inputfile {
println!("Importing {}", i.display());
println!();
}
let imported = parse(inputfile, debug);
env.evaluate(&imported);
let mut rl = DefaultEditor::new().unwrap();
loop {
let readline = match rl.readline(&format!(
"In[{}] >> ",
i,
)) {
Ok (r) => {
let _ = rl.add_history_entry(r.as_str());
r
},
Err (_) => Error::CouldNotReadLine (i).throw(),
};
println!();
let expr = parser.parse(&readline);
let output = env.evaluate(&expr);
let outputstr = format!("Out[{}] >> {}", i, output);
println!("{}", outputstr.truecolor(198, 215, 247));
if output.len() == 0 {
println!();
}
i += 1;
}
}