summaryrefslogtreecommitdiffstats
path: root/cli/src
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-08-02 13:59:35 +0200
committerGustav Sörnäs <gustav@sornas.net>2021-08-02 13:59:35 +0200
commit661f1bd5575e139a51bad7f08061c677e00d8106 (patch)
treead1bbfe398346e6f6e2ac6d307a6545c08d420b3 /cli/src
parent91793b790077edac19ecfba1ec3a5dcce71d67fb (diff)
downloadmoney-661f1bd5575e139a51bad7f08061c677e00d8106.tar.gz
move code
Diffstat (limited to 'cli/src')
-rw-r--r--cli/src/search.rs42
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
- }
-}