Allow multiline input in the REPL example

This commit is contained in:
Jonas Schievink 2017-06-17 14:43:05 +02:00
parent 2cddfecfb2
commit 4a980de0ed

View file

@ -16,14 +16,24 @@ fn main() {
stdout.flush().unwrap();
let mut line = String::new();
stdin.read_line(&mut line).unwrap();
match lua.eval::<LuaMultiValue>(&line) {
Ok(values) => {
println!("{}", values.iter().map(|value| format!("{:?}", value)).collect::<Vec<_>>().join("\t"));
}
Err(e) => {
writeln!(stderr(), "error: {}", e).unwrap();
loop {
stdin.read_line(&mut line).unwrap();
match lua.eval::<LuaMultiValue>(&line) {
Ok(values) => {
println!("{}", values.iter().map(|value| format!("{:?}", value)).collect::<Vec<_>>().join("\t"));
break;
}
Err(LuaError(LuaErrorKind::IncompleteStatement(_), _)) => {
// continue reading input and append it to `line`
write!(stdout, ">> ").unwrap();
stdout.flush().unwrap();
}
Err(e) => {
writeln!(stderr(), "error: {}", e).unwrap();
break;
}
}
}
}