diff --git a/CHANGELOG.md b/CHANGELOG.md
index d12e3d9..42727fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `REMIND` statement
- `MOVE` entries to a different time
+### Changed
+- Output is now colored
+
## 0.1.0 - 2021-12-20
### Added
diff --git a/Cargo.lock b/Cargo.lock
index a4a4cfc..5afc4fb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -101,6 +101,17 @@ dependencies = [
"vec_map",
]
+[[package]]
+name = "colored"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
+dependencies = [
+ "atty",
+ "lazy_static",
+ "winapi",
+]
+
[[package]]
name = "computus"
version = "1.0.0"
@@ -425,6 +436,7 @@ name = "today"
version = "0.1.0"
dependencies = [
"chrono",
+ "colored",
"computus",
"directories",
"pest",
diff --git a/Cargo.toml b/Cargo.toml
index edc3e45..7a46abe 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,6 +5,7 @@ edition = "2021"
[dependencies]
chrono = "0.4.19"
+colored="2.0.0"
computus = "1.0.0"
directories = "4.0.1"
pest = "2.1.3"
diff --git a/src/cli/layout/line.rs b/src/cli/layout/line.rs
index 23adaba..e5e8412 100644
--- a/src/cli/layout/line.rs
+++ b/src/cli/layout/line.rs
@@ -14,11 +14,39 @@ use crate::files::Files;
use super::super::error::{Error, Result};
use super::day::{DayEntry, DayLayout};
+#[derive(Debug, Clone, Copy)]
+pub enum SpanStyle {
+ Solid,
+ Dashed,
+ Dotted,
+}
+
+impl SpanStyle {
+ fn from_indentation(index: usize) -> Self {
+ match index % 3 {
+ 0 => Self::Solid,
+ 1 => Self::Dashed,
+ 2 => Self::Dotted,
+ _ => unreachable!(),
+ }
+ }
+}
+
#[derive(Debug, Clone, Copy)]
pub enum SpanSegment {
- Start,
- Middle,
- End,
+ Start(SpanStyle),
+ Middle(SpanStyle),
+ End(SpanStyle),
+}
+
+impl SpanSegment {
+ fn style(&self) -> SpanStyle {
+ match self {
+ SpanSegment::Start(s) => *s,
+ SpanSegment::Middle(s) => *s,
+ SpanSegment::End(s) => *s,
+ }
+ }
}
#[derive(Debug, Clone, Copy)]
@@ -28,10 +56,19 @@ pub enum Times {
FromTo(Time, Time),
}
+#[derive(Debug, Clone, Copy)]
+pub enum LineKind {
+ Task,
+ Done,
+ Note,
+ Birthday,
+}
+
pub enum LineEntry {
Day {
spans: Vec