1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! Filter expression parser and evaluator for Todoist filter syntax.
//!
//! This module provides a parser and evaluator for Todoist's filter syntax,
//! allowing local filtering of cached items without server round-trips.
//!
//! # Supported Syntax
//!
//! ## Date Keywords
//! - `today` - Items due today
//! - `tomorrow` - Items due tomorrow
//! - `overdue` - Items past their due date
//! - `no date` - Items without a due date
//!
//! ## Priority
//! - `p1`, `p2`, `p3`, `p4` - Filter by priority level
//!
//! ## Labels
//! - `@label` - Items with a specific label
//!
//! ## Projects
//! - `#project` - Items in a specific project
//! - `##project` - Items in a project or its subprojects
//!
//! ## Sections
//! - `/section` - Items in a specific section
//!
//! ## Boolean Operators
//! - `&` - AND
//! - `|` - OR
//! - `!` - NOT
//! - `()` - Grouping
//!
//! # Example
//!
//! ```
//! use todoist_cache_rs::filter::{FilterParser, Filter, FilterEvaluator, FilterContext};
//!
//! // Parse a filter expression
//! let filter = FilterParser::parse("today").unwrap();
//! assert!(matches!(filter, Filter::Today));
//!
//! // Create evaluation context
//! let context = FilterContext::new(&[], &[], &[]);
//!
//! // Create an evaluator
//! let evaluator = FilterEvaluator::new(&filter, &context);
//!
//! // Filter items (empty example)
//! let items: Vec<todoist_api_rs::sync::Item> = vec![];
//! let results = evaluator.filter_items(&items);
//! ```
pub use ;
pub use ;
pub use ;
pub use FilterParser;