extern crate tabwriter;
extern crate vervolg;
use std::io::prelude::*;
use std::io;
use tabwriter::TabWriter;
fn main() {
let mut input_line = String::new();
let mut session = vervolg::session::Session::new();
loop {
print!("> ");
let _ = io::stdout().flush();
io::stdin().read_line(&mut input_line).ok().expect("The read line failed O:");
match input_line.trim() {
"EXIT" => break, line => {
let mut evaluator = vervolg::eval::Evaluator::new(&mut session);
let result = evaluator.eval(&line.to_string());
match result {
Ok(mut rowset) => {
let stdout = io::stdout();
let mut handle = stdout.lock();
let mut tw = TabWriter::new(handle);
while let Some(row) = rowset.next() {
if row.is_ok() {
for field in row.unwrap().iter() {
let variable: &str = field;
write!(tw, "{}\t", variable).unwrap();
}
write!(tw, "\n").unwrap();
}
}
tw.flush().unwrap();
},
Err(err) => {
println!("{}", err);
}
}
}
}
input_line.clear();
}
println!("Bye...");
}