From 3c0ea68d29e9e85797b9716005bf95d5e7d24c7d Mon Sep 17 00:00:00 2001 From: Joscha Date: Sun, 12 Dec 2021 11:09:14 +0000 Subject: [PATCH] Render layouts --- src/cli.rs | 8 +- src/cli/render.rs | 226 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+), 2 deletions(-) create mode 100644 src/cli/render.rs diff --git a/src/cli.rs b/src/cli.rs index aff5edf..b4a1273 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -7,8 +7,10 @@ use crate::eval::{DateRange, EntryMode}; use crate::files::Files; use self::layout::Layout; +use self::render::Render; mod layout; +mod render; #[derive(Debug, StructOpt)] pub struct Opt { @@ -29,11 +31,13 @@ pub fn run() -> anyhow::Result<()> { .unwrap(); let entries = files.eval(EntryMode::Relevant, range)?; - println!("{:#?}", entries); let mut layout = Layout::new(range, now); layout.layout(&files, &entries); - println!("{:#?}", layout); + + let mut render = Render::new(); + render.render(&files, &entries, &layout); + print!("{}", render.display()); files.save()?; Ok(()) diff --git a/src/cli/render.rs b/src/cli/render.rs new file mode 100644 index 0000000..7f26500 --- /dev/null +++ b/src/cli/render.rs @@ -0,0 +1,226 @@ +use std::collections::HashMap; + +use crate::eval::{Entry, EntryKind}; +use crate::files::commands::Command; +use crate::files::primitives::Time; +use crate::files::Files; + +use super::layout::{Layout, LayoutEntry}; + +#[derive(Debug, Clone, Copy)] +enum SpanSegment { + Start, + Middle, + End, +} + +struct Line { + number: Option, + spans: Vec>, + time: Option