moduforge_rules_template/
lib.rs

1mod error;
2mod interpreter;
3mod lexer;
4mod parser;
5
6use crate::interpreter::Interpreter;
7use crate::lexer::Lexer;
8use crate::parser::Parser;
9use moduforge_rules_expression::variable::Variable;
10
11pub use crate::error::{ParserError, TemplateRenderError};
12
13pub fn render(
14    template: &str,
15    context: Variable,
16) -> Result<Variable, TemplateRenderError> {
17    let tokens = Lexer::from(template.trim()).collect();
18    let nodes = Parser::from(tokens.as_slice()).collect()?;
19
20    Interpreter::from(nodes.as_slice()).collect_for(context)
21}