pub struct ConditionParser;Expand description
Parser for AHB condition expressions.
Implementations§
Source§impl ConditionParser
impl ConditionParser
Sourcepub fn parse(input: &str) -> Result<Option<ConditionExpr>, ParseError>
pub fn parse(input: &str) -> Result<Option<ConditionExpr>, ParseError>
Parse an AHB status string into a condition expression.
Returns Ok(None) if the input contains no condition references
(e.g., bare "Muss" or empty string).
§Examples
use automapper_validation::expr::ConditionParser;
use automapper_validation::expr::ConditionExpr;
let expr = ConditionParser::parse("Muss [494]").unwrap().unwrap();
assert_eq!(expr, ConditionExpr::Ref(494));Sourcepub fn parse_with_ub(
input: &str,
ub_definitions: &BTreeMap<String, ConditionExpr>,
) -> Result<Option<ConditionExpr>, ParseError>
pub fn parse_with_ub( input: &str, ub_definitions: &BTreeMap<String, ConditionExpr>, ) -> Result<Option<ConditionExpr>, ParseError>
Parse an AHB status string, expanding UB condition references inline.
When [UB1] is encountered and ub_definitions contains “UB1”, the
corresponding pre-parsed expression is substituted. Unknown UB references
fall back to the normal parse_condition_id behavior.
Sourcepub fn parse_status_branches(
input: &str,
ub_definitions: &BTreeMap<String, ConditionExpr>,
) -> Result<Vec<StatusBranch>, ParseError>
pub fn parse_status_branches( input: &str, ub_definitions: &BTreeMap<String, ConditionExpr>, ) -> Result<Vec<StatusBranch>, ParseError>
Parse an AHB status into one StatusBranch per status line.
Validation asks for the same few hundred statuses of a format version
for every field of every group instance (an MSCONS Lastgang: thousands
of times each), so each thread keeps what it parsed. A status naming a
UB condition depends on ub_definitions as well and is not kept.
Sourcepub fn parse_raw(input: &str) -> Result<Option<ConditionExpr>, ParseError>
pub fn parse_raw(input: &str) -> Result<Option<ConditionExpr>, ParseError>
Parse an expression that is known to contain conditions (no prefix stripping).
Returns Err if the input cannot be parsed. Returns Ok(None) if empty.