use microcad_lang::{builtin::*, diag::*, eval::*, value::*};
use crate::Symbol;
pub fn import() -> Symbol {
Symbol::new_builtin(
Identifier::no_ref("import"),
Some(
[
parameter!(filename: String),
parameter!(id: String = String::new()),
]
.into_iter()
.collect(),
),
&|parameter_values, argument_values, context| match ArgumentMatch::find_match(
argument_values,
parameter_values.expect("Parameter values"),
) {
Ok(arg_map) => {
let search_paths = context.search_paths().clone();
context.import(&arg_map, &search_paths)
}
Err(err) => {
context.error(argument_values, err)?;
Ok(Value::None)
}
},
)
}