summaryrefslogtreecommitdiffstats
path: root/cli/src/search.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/src/search.rs')
-rw-r--r--cli/src/search.rs15
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)]