From b9c2a3fd86a34a185810b54273c59e92cfaaed84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 3 Aug 2021 15:21:36 +0200 Subject: parse filters again --- cli/src/search.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'cli/src/search.rs') 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)] -- cgit v1.2.1