diff options
Diffstat (limited to 'cli/src/search.rs')
| -rw-r--r-- | cli/src/search.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/cli/src/search.rs b/cli/src/search.rs index 6692b00..ab68365 100644 --- a/cli/src/search.rs +++ b/cli/src/search.rs @@ -1,8 +1,9 @@ use chrono::{naive::NaiveDate, Duration}; use nom::branch::alt; use nom::bytes::complete::{is_not, tag, take}; -use nom::character::complete::{alphanumeric1, anychar, char, digit1}; +use nom::character::complete::{alphanumeric1, anychar, char, digit1, space1}; use nom::combinator::{map, map_res, recognize}; +use nom::multi::separated_list0; use nom::sequence::{delimited, pair, preceded}; use rust_decimal::Decimal; use std::convert::TryFrom; @@ -277,10 +278,16 @@ impl<'t> Search<'t> { } self } +} - pub fn parse(mut self, rules: String) -> Self { - todo!() - } +pub fn parse_filters(i: &str) -> Filter { + map( + separated_list0( + space1, + Filter::parse + ), + |filters| Filter::Intersect(Constraint::Filters(filters)) + )(i).unwrap().1 } #[cfg(test)] |
