1个不稳定版本

0.3.13 2022年4月9日

#2877 in 解析器实现

MIT许可证

20KB
500

Bool Expr Parser库

布尔表达式解析和评估函数用于特性标志 - flipper

它解析表达式并使用给定的输入哈希表评估并返回true/false

你可以解析和评估的复杂表达式的示例

(countryCode=NL or countryCode=DE) 
    AND uid in (121321,2312312,231231) 
    and role in (Admin, "Super admin")
    and (
        uid not in ( ca3ed35c-114f-488d-82b7-7c4d1bd5cbcd,  b83f48af-ecb6-4b50-9d5e-b690db2a332b ) 
        or uid <= 0
    ) 
    and !(street_name='Random street 1' and countryCode=NL)

给定一个输入哈希表

    let map = HashMap::from([
        ("countryCode", "DE"),
        ("uid", "2312312"),
        ("role", "Super admin"),
        ("street_name", "Random street 2"),
    ]);

结果将是 true

assert_eq!(
        eval(
            BoolExprParser::parse(Rule::main, &expression)
                .expect("Parse error"),
            &map
        ),
        true
    );

请参阅src/test.rs中的测试 test_in_readme_documentation()

依赖项

~2.2–3MB
~59K SLoC