cel_parser/ast/
operators.rs1pub 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];