summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuvi Panda <yuvipanda@gmail.com>2021-05-09 16:09:39 +0530
committerGitHub <noreply@github.com>2021-05-09 11:39:39 +0100
commita04865d9d871dd68a3d66415e1e0892d24bf9684 (patch)
treee14ebd2b7d120a2acf63ad8c35b80c30ea1ad423
parent19bd00f62005d07fc22ef72558e1102a7bb13b03 (diff)
Use an enum for dialect (#80)
-rw-r--r--atuin-client/src/settings.rs21
-rw-r--r--src/command/stats.rs7
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?;