diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-08-02 13:59:35 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-08-02 13:59:35 +0200 |
| commit | 661f1bd5575e139a51bad7f08061c677e00d8106 (patch) | |
| tree | ad1bbfe398346e6f6e2ac6d307a6545c08d420b3 /cli/src/search.rs | |
| parent | 91793b790077edac19ecfba1ec3a5dcce71d67fb (diff) | |
| download | money-661f1bd5575e139a51bad7f08061c677e00d8106.tar.gz | |
move code
Diffstat (limited to 'cli/src/search.rs')
| -rw-r--r-- | cli/src/search.rs | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/cli/src/search.rs b/cli/src/search.rs index ff9f772..7359b19 100644 --- a/cli/src/search.rs +++ b/cli/src/search.rs @@ -6,11 +6,6 @@ use crate::transaction::{Category, Transaction}; //TODO tests -pub struct Search<'t> { - filtered: Vec<usize>, - transactions: Vec<&'t Transaction>, -} - #[derive(Clone)] pub enum DateIsh { Absolute(NaiveDate), @@ -50,6 +45,22 @@ pub enum Comparison { LessOrEqual, } +fn parse_comparison(s: &str) -> Option<(Decimal, Comparison)> { + if s.starts_with(">=") { + Some((Decimal::from_str(&s[2..]).ok()?, Comparison::GreaterOrEqual)) + } else if s.starts_with("<=") { + Some((Decimal::from_str(&s[2..]).ok()?, Comparison::LessOrEqual)) + } else if s.starts_with("=") { + Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Equal)) + } else if s.starts_with(">") { + Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Greater)) + } else if s.starts_with("<") { + Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Less)) + } else { + None + } +} + pub enum Constraint { Category(Category), Before(DateIsh), @@ -120,6 +131,11 @@ impl FilterType { } } +pub struct Search<'t> { + filtered: Vec<usize>, + transactions: Vec<&'t Transaction>, +} + impl<'t> Search<'t> { pub fn new(transactions: Vec<&'t Transaction>) -> Self { Self { @@ -167,19 +183,3 @@ impl<'t> Search<'t> { self } } - -fn parse_comparison(s: &str) -> Option<(Decimal, Comparison)> { - if s.starts_with(">=") { - Some((Decimal::from_str(&s[2..]).ok()?, Comparison::GreaterOrEqual)) - } else if s.starts_with("<=") { - Some((Decimal::from_str(&s[2..]).ok()?, Comparison::LessOrEqual)) - } else if s.starts_with("=") { - Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Equal)) - } else if s.starts_with(">") { - Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Greater)) - } else if s.starts_with("<") { - Some((Decimal::from_str(&s[1..]).ok()?, Comparison::Less)) - } else { - None - } -} |
