cel_parser/ast/
operators.rs

1pub fn find_operator(input: &str) -> Option<&str> {
2    for (op, operator) in OPERATORS {
3        if op == input {
4            return Some(operator);
5        }
6    }
7    None
8}
9
10pub const CONDITIONAL: &str = "_?_:_";
11pub const LOGICAL_AND: &str = "_&&_";
12pub const LOGICAL_OR: &str = "_||_";
13pub const LOGICAL_NOT: &str = "!_";
14pub const SUBSTRACT: &str = "_-_";
15pub const ADD: &str = "_+_";
16pub const MULTIPLY: &str = "_*_";
17pub const DIVIDE: &str = "_/_";
18pub const MODULO: &str = "_%_";
19pub const EQUALS: &str = "_==_";
20pub const NOT_EQUALS: &str = "_!=_";
21pub const GREATER_EQUALS: &str = "_>=_";
22pub const LESS_EQUALS: &str = "_<=_";
23pub const GREATER: &str = "_>_";
24pub const LESS: &str = "_<_";
25pub const NEGATE: &str = "-_";
26pub const INDEX: &str = "_[_]";
27pub const OPT_INDEX: &str = "_[?_]";
28pub const OPT_SELECT: &str = "_?._";
29
30pub const EXISTS_ONE: &str = "exists_one";
31pub const HAS: &str = "has";
32pub const ALL: &str = "all";
33pub const EXISTS: &str = "exists";
34pub const MAP: &str = "map";
35pub const FILTER: &str = "filter";
36
37pub const NOT_STRICTLY_FALSE: &str = "@not_strictly_false";
38pub const IN: &str = "@in";
39
40const OPERATORS: [(&str, &str); 12] = [
41    ("-", SUBSTRACT),
42    ("+", ADD),
43    ("*", MULTIPLY),
44    ("/", DIVIDE),
45    ("%", MODULO),
46    ("==", EQUALS),
47    ("!=", NOT_EQUALS),
48    (">=", GREATER_EQUALS),
49    ("<=", LESS_EQUALS),
50    (">", GREATER),
51    ("<", LESS),
52    ("in", IN),
53];