1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#![warn(missing_docs)]

//! [`Calculator`] calculate given expression.
//! Core functionality for [clc](https://crates.io/crates/clc).
//!
//! # Examples
//! ```rust
//! use clc_engine::Calculator;
//!
//! let clc = Calculator::new();
//! let eval = clc.calculate_line("sqrt(sqrt(16)) * (4 + 2)");
//!
//! assert_eq!(eval, Ok(12.));
//! ```
//!
//! ## Division by zero
//! ```rust
//! use clc_engine::{Calculator, Error,EvalError};
//!
//! let clc = Calculator::new();
//! let err = clc.calculate_line("10 / 0");
//!
//! assert_eq!(err, Err(Error::Eval(EvalError::DivisionByZero)));
//! ```
//!
//! Under the hood clc-engine use [nom](https://crates.io/crates/nom) to parse expression

mod calculator;
mod errors;
mod eval;
mod expression;
#[cfg(test)]
mod macros;
mod parse;

pub use {
    crate::calculator::Calculator,
    errors::{Error, EvalError},
};