Skip to main content

lemma/
lib.rs

1//! # Lemma Engine
2//!
3//! **Rules for man and machine**
4//!
5//! Consumer API: **`load`** → **`list`** → **`show`** / **`source`** → **`run`**.
6
7#[cfg(test)]
8mod tests;
9
10pub(crate) mod computation;
11pub(crate) mod engine;
12pub(crate) mod error;
13pub(crate) mod evaluation;
14pub(crate) mod formatting;
15pub(crate) mod limits;
16pub(crate) mod literals;
17pub(crate) mod parsing;
18pub(crate) mod planning;
19pub(crate) mod registry;
20pub(crate) mod spec_set_id;
21pub(crate) mod stdlib;
22
23#[cfg(not(target_arch = "wasm32"))]
24pub mod deps;
25
26#[cfg(target_arch = "wasm32")]
27pub mod wasm;
28
29pub use engine::{
30    resolve_effective, Engine, Errors, ListedSpec, ResolvedRepository, EMBEDDED_STDLIB_REPOSITORY,
31};
32pub use error::{Error, ErrorDetails, ErrorKind, RequestErrorKind};
33pub use evaluation::data_input::DataValueInput;
34pub use evaluation::explanations::{format_explanation, Cause, Explanation, ExplanationNode};
35pub use evaluation::operations::{OperationResult, VetoType};
36pub use evaluation::response::{Response, RuleResult};
37pub use formatting::{format_parse_result, format_source, format_specs};
38pub use limits::{
39    ResourceLimits, MAX_DATA_NAME_LENGTH, MAX_RULE_NAME_LENGTH, MAX_SPEC_NAME_LENGTH,
40};
41pub use literals::{DateGranularity, MeasureUnit, MeasureUnits, RatioUnit, RatioUnits};
42pub use parsing::ast::DateTimeValue;
43pub use parsing::source::SourceType;
44pub use planning::execution_plan::type_detail_lines;
45pub use planning::execution_plan::{DataEntry, Show, ShowVersion};
46pub use planning::explanation::{ConversionTraceRole, SerializedConversionTraceStep};
47pub use planning::semantics::{
48    DataPath, DataValue as BindingDataValue, LemmaType, LiteralValue, TypeSpecification, ValueKind,
49};
50pub use spec_set_id::parse_spec_set_id;
51pub use stdlib::UNITS_LEMMA;
52
53/// Exact rational helpers for in-tree integration tests. Not a supported consumer API.
54#[doc(hidden)]
55pub mod __test_support {
56    pub use crate::computation::rational::{
57        checked_div, checked_mul, decimal_to_rational, rational_new,
58    };
59}
60
61// Tier 1 — language surface (always)
62pub use parsing::ast::{
63    try_parse_type_constraint_command, DataValue, Span, SpecRef, TimezoneValue,
64};
65pub use parsing::lexer::{Lexer, TokenKind};
66pub use parsing::source::Source;
67pub use parsing::{parse, ParseResult};
68
69// Tier 2 — registry network (feature-gated)
70#[cfg(feature = "registry")]
71pub use engine::Context;
72#[cfg(feature = "registry")]
73pub use parsing::ast::{LemmaRepository, LemmaSpec};
74#[cfg(feature = "registry")]
75pub use planning::LemmaSpecSet;
76#[cfg(all(feature = "registry", not(target_arch = "wasm32")))]
77pub use registry::resolve_registry_references;
78#[cfg(feature = "registry")]
79pub use registry::{LemmaBase, Registry, RegistryBundle, RegistryError, RegistryErrorKind};