Skip to main content

haz_query/
lib.rs

1//! Filter-engine for `haz query`.
2//!
3//! `haz-query` layers two responsibilities on top of the
4//! domain-free grammar provided by [`haz_query_lang`]:
5//!
6//! - **Atom typing.** The [`expr`] module lifts the raw
7//!   `(text, span)` atoms parsed by `haz-query-lang` into typed
8//!   expressions per the `QRY-003` / `QRY-004` rules:
9//!   `Expr<TagName>`, `Expr<ProjectName>`, `Expr<TaskName>`,
10//!   and (in subsequent revisions) `Expr<PathPattern>` and
11//!   `Expr<RelationalAtom>`. Atom-validation errors
12//!   (`ID-001..ID-005` violations, unknown relational kinds,
13//!   malformed path patterns) surface here with their byte
14//!   spans.
15//!
16//! - **Engine.** The `engine` module (forthcoming) applies
17//!   the typed expressions against a loaded workspace and its
18//!   validated task graph, producing the effective task set
19//!   per `QRY-006` / `QRY-007`.
20//!
21//! Splitting the language layer ([`haz_query_lang`]) from the
22//! engine keeps the boolean grammar reusable and free of any
23//! `haz-domain` / `haz-dag` coupling.
24
25#![deny(missing_docs)]
26
27pub mod engine;
28pub mod expr;