rscel 1.0.8

Cel interpreter in rust
Documentation
use crate::BindContext;

use super::bind_context::RsCelMacro;

mod all;
mod coalesce;
mod count;
mod exists;
mod exists_one;
mod filter;
mod find;
mod flat_map;
mod has;
mod helpers;
mod map;
mod reduce;

pub use all::all_impl;
pub use coalesce::coalesce_impl;
pub use count::count_impl;
pub use exists::exists_impl;
pub use exists_one::exists_one_impl;
pub use filter::filter_impl;
pub use find::find_impl;
pub use flat_map::flat_map_impl;
pub use has::has_impl;
pub use map::map_impl;
pub use reduce::reduce_impl;

const DEFAULT_MACROS: &[(&str, &'static RsCelMacro)] = &[
    ("has", &has_impl),
    ("all", &all_impl),
    ("count", &count_impl),
    ("exists", &exists_impl),
    ("exists_one", &exists_one_impl),
    ("filter", &filter_impl),
    ("find", &find_impl),
    ("flatMap", &flat_map_impl),
    ("map", &map_impl),
    ("reduce", &reduce_impl),
    ("coalesce", &coalesce_impl),
];

const COMPILE_MACROS: &[(&str, &'static RsCelMacro)] = &[
    ("all", &all_impl),
    ("exists", &exists_impl),
    ("exists_one", &exists_one_impl),
    ("filter", &filter_impl),
    ("map", &map_impl),
    ("reduce", &reduce_impl),
];

pub fn load_default_macros(exec_ctx: &mut BindContext) {
    for (name, macro_) in DEFAULT_MACROS.iter() {
        exec_ctx.bind_macro(name, *macro_)
    }
}

pub fn load_compile_macros(exec_ctx: &mut BindContext) {
    for (name, macro_) in COMPILE_MACROS.iter() {
        exec_ctx.bind_macro(name, *macro_)
    }
}