pub fn parse_operator(input: &str) -> IResult<&str, Operator>Expand description
Parse comparison operators for magic rules
Supports both symbolic and text representations of operators:
=or==for equality!=or<>for inequality<for less-than>for greater-than<=for less-than-or-equal>=for greater-than-or-equal&for bitwise AND
§Examples
use libmagic_rs::parser::grammar::parse_operator;
use libmagic_rs::parser::ast::Operator;
assert_eq!(parse_operator("="), Ok(("", Operator::Equal)));
assert_eq!(parse_operator("=="), Ok(("", Operator::Equal)));
assert_eq!(parse_operator("!="), Ok(("", Operator::NotEqual)));
assert_eq!(parse_operator("<>"), Ok(("", Operator::NotEqual)));
assert_eq!(parse_operator("<"), Ok(("", Operator::LessThan)));
assert_eq!(parse_operator(">"), Ok(("", Operator::GreaterThan)));
assert_eq!(parse_operator("<="), Ok(("", Operator::LessEqual)));
assert_eq!(parse_operator(">="), Ok(("", Operator::GreaterEqual)));
assert_eq!(parse_operator("&"), Ok(("", Operator::BitwiseAnd)));§Errors
Returns a nom parsing error if:
- Input does not start with a recognized operator symbol
- Input is empty or contains no valid operator
- Operator syntax is incomplete (e.g., just
!without=)