1pub(crate) mod cache;
26pub mod compiled_rules;
27pub(crate) mod compiler;
28pub(crate) mod condition;
29pub(crate) mod config;
30pub mod engine;
31pub mod error;
32pub mod models;
33pub(crate) mod parser;
34
35pub use compiled_rules::CompiledRules;
36pub use error::SyaraError;
37pub use models::{Match, MatchDetail, Rule};
38
39use std::path::Path;
40
41pub fn compile(path: impl AsRef<Path>) -> Result<CompiledRules, SyaraError> {
43 let rules = parser::SyaraParser::new().parse_file(path)?;
44 let registry = config::Registry::new();
45 compiler::Compiler::compile(rules, registry)
46}
47
48pub fn compile_str(src: &str) -> Result<CompiledRules, SyaraError> {
50 let rules = parser::SyaraParser::new().parse_str(src)?;
51 let registry = config::Registry::new();
52 compiler::Compiler::compile(rules, registry)
53}