Fix table parsing

This commit is contained in:
JT
2021-08-29 07:17:30 +12:00
parent 24cd1b591c
commit 46d2efca13
3 changed files with 81 additions and 11 deletions

View File

@ -263,7 +263,26 @@ pub fn eval_expression(state: &State, expr: &Expression) -> Result<Value, ShellE
span: expr.span,
})
}
Expr::Table(_, _) => Err(ShellError::Unsupported(expr.span)),
Expr::Table(headers, vals) => {
let mut output_headers = vec![];
for expr in headers {
output_headers.push(eval_expression(state, expr)?.as_string()?);
}
let mut output_rows = vec![];
for val in vals {
let mut row = vec![];
for expr in val {
row.push(eval_expression(state, expr)?);
}
output_rows.push(row);
}
Ok(Value::Table {
headers: output_headers,
val: output_rows,
span: expr.span,
})
}
Expr::Keyword(_, _, expr) => eval_expression(state, expr),
Expr::String(s) => Ok(Value::String {
val: s.clone(),