microcad_lang/eval/source_file.rs
1// Copyright © 2025 The µcad authors <info@ucad.xyz>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4use crate::{eval::*, model::*, syntax::*};
5
6impl Eval<Model> for std::rc::Rc<SourceFile> {
7 fn eval(&self, context: &mut Context) -> EvalResult<Model> {
8 context.scope(
9 StackFrame::Source(self.id(), SymbolMap::default()),
10 |context| {
11 let model = ModelBuilder::new(Element::Group, self.src_ref())
12 .add_children(self.statements.eval(context)?)?
13 .attributes(self.statements.eval(context)?)
14 .build();
15 Ok(model)
16 },
17 )
18 }
19}