haz_query/expr/mod.rs
1//! Typed-atom transformation for `haz query` filter expressions.
2//!
3//! The parser in [`haz_query_lang`] produces an `Expr<RawAtom>`
4//! whose atoms are still raw text. This module lifts atoms into
5//! the typed representations the engine consumes:
6//!
7//! - `Expr<TagName>` for `--tags` (`QRY-003`).
8//! - `Expr<ProjectName>` for `--projects` (`QRY-003`).
9//! - `Expr<TaskName>` for `--tasks` (`QRY-003`).
10//!
11//! Each per-attribute parser is a pure `RawAtom -> Result<T,
12//! AtomError>` function. Combine with
13//! [`haz_query_lang::expr::Expr::try_map`] to lift a parsed
14//! expression in one step.
15//!
16//! Path-pattern atoms (`--inputs` / `--outputs`) and relational
17//! atoms (`--child-of`, `--parent-of`, `--depends-on`,
18//! `--ancestor-of`) are handled by sibling modules.
19
20pub mod atom;
21pub(crate) mod glob_intersect;
22pub mod identifier;
23pub mod path;
24pub mod relational;
25pub mod shortcut;