Skip to main content

zen_engine/policy/
mod.rs

1use std::sync::Arc;
2
3pub(crate) const MAX_RECURSION_DEPTH: usize = 32;
4
5pub(crate) mod blocks;
6pub(crate) mod evaluator;
7pub(crate) mod ir;
8pub(crate) mod linter;
9pub(crate) mod queries;
10pub(crate) mod raw;
11pub(crate) mod refs;
12pub(crate) mod runtime;
13pub(crate) mod validator;
14
15pub use crate::workspace::{
16    BlockExecution, BlockRef, BlockTrace, Completion, ConditionTrace, ConditionalSchema, Cursor,
17    CursorTarget, DecisionTableExtras, DependencyNode, Diagnostic, DiagnosticCode,
18    DiagnosticLocation, Dictionary, DictionaryEntryInfo, DiscriminantVariant, DiscriminatedUnion,
19    EngineEdit, Entity, EntityField, EvaluateRequest, EvaluationError, EvaluationResult,
20    ExpressionKind, FieldOrigin, FunctionResolutionRequest, FunctionTypeResolver, GraphAnalysis,
21    GraphNodeAnalysis, GraphSignature, GraphTraceMap, GuardedProperty, InputProperty,
22    InputValidationError, InspectResult, NlExpression, OutputProperty, PrepareRename, PropertyKind,
23    ReferenceKind, ReferenceSite, RenameTarget, SchemaFieldKind, SchemaGroup, ScopeRequest,
24    Severity, Span, Trace, Workspace, WriteConflict, WriteTrace,
25};
26pub use raw::{BlockDoc, PolicyDocument};
27
28pub type PolicyWorkspace = Workspace;
29
30pub(crate) trait ArcStrTrim {
31    fn trimmed(&self) -> Self;
32}
33
34impl ArcStrTrim for Arc<str> {
35    fn trimmed(&self) -> Self {
36        let trimmed = self.trim();
37        if trimmed.len() == self.len() {
38            self.clone()
39        } else {
40            Arc::from(trimmed)
41        }
42    }
43}