diff options
author | Yuvi Panda <yuvipanda@gmail.com> | 2021-05-09 16:09:39 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-09 11:39:39 +0100 |
commit | a04865d9d871dd68a3d66415e1e0892d24bf9684 (patch) | |
tree | e14ebd2b7d120a2acf63ad8c35b80c30ea1ad423 | |
parent | 19bd00f62005d07fc22ef72558e1102a7bb13b03 (diff) |
Use an enum for dialect (#80)
-rw-r--r-- | atuin-client/src/settings.rs | 21 | ||||
-rw-r--r-- | src/command/stats.rs | 7 |
2 files changed, 22 insertions, 6 deletions
diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs index 7ccbaf32..a2224cd8 100644 --- a/atuin-client/src/settings.rs +++ b/atuin-client/src/settings.rs @@ -19,9 +19,28 @@ pub enum SearchMode { FullText, } +// FIXME: Can use upstream Dialect enum if https://github.com/stevedonovan/chrono-english/pull/16 is merged +#[derive(Clone, Debug, Deserialize, Copy)] +pub enum Dialect { + #[serde(rename = "us")] + Us, + + #[serde(rename = "uk")] + Uk, +} + +impl From<Dialect> for chrono_english::Dialect { + fn from(d: Dialect) -> chrono_english::Dialect { + match d { + Dialect::Uk => chrono_english::Dialect::Uk, + Dialect::Us => chrono_english::Dialect::Us, + } + } +} + #[derive(Clone, Debug, Deserialize)] pub struct Settings { - pub dialect: String, + pub dialect: Dialect, pub auto_sync: bool, pub sync_address: String, pub sync_frequency: String, diff --git a/src/command/stats.rs b/src/command/stats.rs index 6aa54a2c..742202ae 100644 --- a/src/command/stats.rs +++ b/src/command/stats.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use chrono::prelude::*; use chrono::Duration; -use chrono_english::{parse_date_string, Dialect}; +use chrono_english::parse_date_string; use cli_table::{format::Justify, print_stdout, Cell, Style, Table}; use eyre::{eyre, Result}; @@ -84,10 +84,7 @@ impl Cmd { words.join(" ") }; - let start = match settings.dialect.to_lowercase().as_str() { - "uk" => parse_date_string(&words, Local::now(), Dialect::Uk)?, - _ => parse_date_string(&words, Local::now(), Dialect::Us)?, - }; + let start = parse_date_string(&words, Local::now(), settings.dialect.into())?; let end = start + Duration::days(1); let history = db.range(start.into(), end.into()).await?; |