vegafusion_runtime/expression/compiler/
array.rs

1use crate::expression::compiler::{compile, config::CompilationConfig};
2use datafusion_expr::Expr;
3use datafusion_functions_nested::expr_fn::make_array;
4use vegafusion_common::datafusion_common::DFSchema;
5use vegafusion_core::error::Result;
6use vegafusion_core::proto::gen::expression::ArrayExpression;
7
8pub fn compile_array(
9    node: &ArrayExpression,
10    config: &CompilationConfig,
11    schema: &DFSchema,
12) -> Result<Expr> {
13    let mut elements: Vec<Expr> = Vec::new();
14    for el in &node.elements {
15        let phys_expr = compile(el, config, Some(schema))?;
16        elements.push(phys_expr);
17    }
18    Ok(make_array(elements))
19}