summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkshay <nerdy@peppe.rs>2020-07-20 21:13:45 +0530
committerAkshay <nerdy@peppe.rs>2020-07-20 21:13:45 +0530
commit2a3be003015bac9c6a13549029b9fb4595e88384 (patch)
tree6d613a1b59ca277a82c8a688ec029774d10f31d5
parent8b91a7c0b3d9bd4fac3b140f5bc8a40ac324289a (diff)
allow "untracking" of habits, closes #18
-rw-r--r--Cargo.lock44
-rw-r--r--src/habit/bit.rs17
-rw-r--r--src/habit/count.rs7
-rw-r--r--src/habit/prelude.rs1
4 files changed, 21 insertions, 48 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 63d34ea..ade0cc4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -92,12 +92,6 @@ dependencies = [
]
[[package]]
-name = "cc"
-version = "1.0.58"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
-
-[[package]]
name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -201,10 +195,7 @@ dependencies = [
"lazy_static",
"libc",
"log",
- "maplit",
- "ncurses",
"signal-hook",
- "term_size",
"termion",
"unicode-segmentation",
"unicode-width",
@@ -269,7 +260,7 @@ dependencies = [
[[package]]
name = "dijo"
-version = "0.1.3"
+version = "0.1.4"
dependencies = [
"chrono",
"clap",
@@ -540,12 +531,6 @@ dependencies = [
]
[[package]]
-name = "maplit"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
-
-[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -595,17 +580,6 @@ dependencies = [
]
[[package]]
-name = "ncurses"
-version = "5.99.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15699bee2f37e9f8828c7b35b2bc70d13846db453f2d507713b758fabe536b82"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
-]
-
-[[package]]
name = "net2"
version = "0.2.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -713,12 +687,6 @@ dependencies = [
]
[[package]]
-name = "pkg-config"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
-
-[[package]]
name = "proc-macro-hack"
version = "0.5.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -882,16 +850,6 @@ dependencies = [
]
[[package]]
-name = "term_size"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9"
-dependencies = [
- "libc",
- "winapi 0.3.9",
-]
-
-[[package]]
name = "termion"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/src/habit/bit.rs b/src/habit/bit.rs
index 3386182..8fa14c2 100644
--- a/src/habit/bit.rs
+++ b/src/habit/bit.rs
@@ -100,11 +100,22 @@ impl Habit for Bit {
fn goal(&self) -> u32 {
return 1;
}
- fn modify(&mut self, date: NaiveDate, _: TrackEvent) {
+ fn modify(&mut self, date: NaiveDate, event: TrackEvent) {
if let Some(val) = self.stats.get_mut(&date) {
- *val = (val.0 ^ true).into();
+ match event {
+ TrackEvent::Increment => *val = (val.0 ^ true).into(),
+ TrackEvent::Decrement => {
+ if val.0 {
+ *val = false.into();
+ } else {
+ self.stats.remove(&date);
+ }
+ }
+ }
} else {
- self.insert_entry(date, CustomBool(true));
+ if event == TrackEvent::Increment {
+ self.insert_entry(date, CustomBool(true));
+ }
}
}
fn set_view_month_offset(&mut self, offset: u32) {
diff --git a/src/habit/count.rs b/src/habit/count.rs
index 1bdf920..d351758 100644
--- a/src/habit/count.rs
+++ b/src/habit/count.rs
@@ -84,12 +84,15 @@ impl Habit for Count {
if *val > 0 {
*val -= 1
} else {
- *val = 0
+ self.stats.remove(&date);
};
}
}
} else {
- self.insert_entry(date, 1);
+ match event {
+ TrackEvent::Increment => self.insert_entry(date, 1),
+ _ => {}
+ };
}
}
fn set_view_month_offset(&mut self, offset: u32) {
diff --git a/src/habit/prelude.rs b/src/habit/prelude.rs
index 19b00a7..8335d6c 100644
--- a/src/habit/prelude.rs
+++ b/src/habit/prelude.rs
@@ -2,6 +2,7 @@ use serde::{Deserialize, Serialize};
use std::default;
use std::fmt;
+#[derive(Debug, PartialEq)]
pub enum TrackEvent {
Increment,
Decrement,