pub mod app;
pub mod cli;
pub mod expression;
pub mod mode;
pub mod ui;
pub mod units;
#[cfg(test)]
mod integration_tests;
pub use app::App;
pub use cli::run_one_shot_mode;
pub use expression::evaluate_expression_with_context;
pub use mode::Mode;
pub use ui::{run_interactive_mode, run_interactive_mode_with_file};
pub use units::{Unit, UnitType, UnitValue};
pub const TICK_RATE_MS: u64 = 16; pub const MAX_INTEGER_FOR_FORMATTING: f64 = 1e15;
pub const FLOAT_EPSILON: f64 = f64::EPSILON;
#[cfg(test)]
pub mod test_helpers {
use super::*;
pub fn evaluate_test_expression(input: &str) -> Option<String> {
evaluate_expression_with_context(input, &[], 0)
}
pub fn evaluate_with_unit_info(input: &str) -> Option<UnitValue> {
use crate::expression::{evaluate_tokens_stream_with_context, tokenize_with_units};
if let Some(tokens) = tokenize_with_units(input) {
evaluate_tokens_stream_with_context(&tokens, &[], 0)
} else {
None
}
}
}