1pub mod display;
4pub mod eval;
5pub mod parser;
6pub mod types;
7
8pub use display::display_number;
9pub use parser::{parse, validate, Expr};
10pub use types::{ErrorKind, ParseError, Value};
11
12use std::collections::HashMap;
13use eval::{evaluate_expr, Context, EvalCtx, Registry};
14
15pub fn evaluate(formula: &str, variables: &HashMap<String, Value>) -> Value {
23 match parse(formula) {
24 Err(_) => Value::Error(ErrorKind::Value),
25 Ok(expr) => {
26 let ctx = Context::new(variables.clone());
27 let registry = Registry::new();
28 let mut eval_ctx = EvalCtx::new(ctx, ®istry);
29 evaluate_expr(&expr, &mut eval_ctx)
30 }
31 }
32}