Repaired the output of the "eval" command.

This commit is contained in:
John Wiegley 2009-02-08 04:32:46 -04:00
parent 2d5ad7dee8
commit d6d0b75bf0

View file

@ -71,19 +71,26 @@ value_t parse_command(call_scope_t& args)
value_t eval_command(call_scope_t& args)
{
var_t<string> arg(args, 0);
std::ostringstream buf;
bool first = true;
if (! arg) {
throw std::logic_error("Usage: eval TEXT");
return 1L;
for (std::size_t i = 0; i < args.size(); i++) {
if (first) {
buf << args[i];
first = false;
} else {
buf << ' ' << args[i];
}
}
report_t& report(find_scope<report_t>(args));
std::ostream& out(report.output_stream);
expr_t expr(*arg);
out << expr.calc(args).strip_annotations(report.what_to_keep())
<< std::endl;
expr_t expr(buf.str());
value_t result(expr.calc(args).strip_annotations(report.what_to_keep()));
if (! result.is_null())
report.output_stream << result << std::endl;
return 0L;
}