1#[cfg(test)]
8mod tests;
9
10pub(crate) mod computation;
11pub mod documentation;
12pub(crate) mod engine;
13pub(crate) mod error;
14pub(crate) mod evaluation;
15pub(crate) mod formatting;
16pub(crate) mod limits;
17pub(crate) mod literals;
18pub(crate) mod parsing;
19pub(crate) mod planning;
20pub mod quality;
21pub(crate) mod registry;
22pub mod result_value;
23pub(crate) mod spec_set_id;
24pub(crate) mod stdlib;
25
26#[cfg(not(target_arch = "wasm32"))]
27pub mod deps;
28
29#[cfg(target_arch = "wasm32")]
30pub mod wasm;
31
32pub use computation::{OperationResult, VetoType};
33pub use engine::{
34 resolve_effective, Engine, Errors, ListedSpec, ResolvedRepository, EMBEDDED_STDLIB_REPOSITORY,
35};
36pub use error::{EngineError, EngineErrorSource, Error, ErrorDetails, ErrorKind, RequestErrorKind};
37pub use evaluation::explanations::{format_explanation, Cause, Explanation, ExplanationNode};
38pub use evaluation::response::{Response, RuleResult};
39pub use evaluation::run_data::RunDataValue;
40pub use formatting::{format_parse_result, format_source, format_specs};
41pub use limits::{
42 ResourceLimits, MAX_DATA_NAME_LENGTH, MAX_RULE_NAME_LENGTH, MAX_SPEC_NAME_LENGTH,
43};
44pub use literals::{DateGranularity, MeasureUnit, MeasureUnits, RatioUnit, RatioUnits};
45pub use parsing::ast::DateTimeValue;
46pub use parsing::source::SourceType;
47pub use planning::execution_plan::type_detail_lines;
48pub use planning::execution_plan::{Show, ShowData, ShowVersion};
49pub use planning::explanation::{ConversionTraceRole, SerializedConversionTraceStep};
50pub use planning::semantics::{DataPath, LemmaType, LiteralValue, TypeSpecification, ValueKind};
51pub use result_value::{CalendarResult, RangeResult, RuleResultValue, RuleResultValueFailure};
52pub use spec_set_id::parse_spec_set_id;
53pub use stdlib::UNITS_LEMMA;
54
55#[doc(hidden)]
57pub mod __test_support {
58 pub use crate::computation::rational::{
59 checked_div, checked_mul, decimal_to_rational, rational_new,
60 };
61 pub use crate::literals::TimeValue;
62 pub use crate::planning::semantics::{SemanticDateTime, SemanticTime, SemanticTimezone};
63
64 pub fn current_binding_error_json(error: &crate::Error) -> serde_json::Value {
66 serde_json::to_value(crate::EngineError::from(error))
67 .expect("BUG: EngineError must serialize")
68 }
69}
70
71pub use parsing::ast::{
73 try_parse_type_constraint_command, DataValue, Span, SpecRef, TimezoneValue,
74};
75pub use parsing::lexer::{Lexer, TokenKind};
76pub use parsing::source::Source;
77pub use parsing::{parse, ParseResult};
78pub use quality::Recommendation;
79
80#[cfg(feature = "registry")]
82pub use engine::Context;
83#[cfg(feature = "registry")]
84pub use parsing::ast::{LemmaRepository, LemmaSpec};
85#[cfg(feature = "registry")]
86pub use planning::LemmaSpecSet;
87#[cfg(all(feature = "registry", not(target_arch = "wasm32")))]
88pub use registry::resolve_registry_references;
89pub use registry::RegistryErrorKind;
90#[cfg(feature = "registry")]
91pub use registry::{LemmaBase, Registry, RegistryBundle, RegistryError};