libhaystack/haystack/filter/filtered/dict.rs
1// Copyright (C) 2020 - 2022, J2 Innovations
2
3//! Haystack Filtered Dict
4
5use super::super::eval::Eval;
6use super::super::eval::EvalContext;
7use super::super::Filter;
8use super::Filtered;
9use crate::defs::namespace::DEFAULT_NS;
10use crate::val::Dict;
11
12/// Implement the filtering trait for a Dict
13/// # Example
14/// ```
15/// use libhaystack::dict;
16/// use libhaystack::val::{Dict, Value};
17/// use libhaystack::filter::{Filter, Filtered};
18/// let dict = dict!{
19/// "site" => Value::make_marker(),
20/// "dis" => Value::make_str("Some site")
21/// };
22/// assert!(dict.filter(&Filter::try_from("site and dis").expect("Filter")));
23/// ```
24impl Filtered<'_, bool> for Dict {
25 fn filter(&self, filter: &Filter) -> bool {
26 let context = EvalContext::make(self, &DEFAULT_NS, self);
27 filter.eval(&context)
28 }
29}