#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Filter {
Today,
Tomorrow,
Overdue,
NoDate,
Next7Days,
SpecificDate {
month: u32,
day: u32,
},
Priority1,
Priority2,
Priority3,
Priority4,
Label(String),
NoLabels,
Project(String),
ProjectWithSubprojects(String),
Section(String),
And(Box<Filter>, Box<Filter>),
Or(Box<Filter>, Box<Filter>),
Not(Box<Filter>),
}
impl Filter {
pub fn and(left: Filter, right: Filter) -> Self {
Filter::And(Box::new(left), Box::new(right))
}
pub fn or(left: Filter, right: Filter) -> Self {
Filter::Or(Box::new(left), Box::new(right))
}
pub fn negate(inner: Filter) -> Self {
Filter::Not(Box::new(inner))
}
}