From 094e6600039e8bd0e16e22813e6d619000b1032c Mon Sep 17 00:00:00 2001 From: Benjamin Sago Date: Mon, 22 May 2017 08:48:32 +0100 Subject: [PATCH] Monday morning Blocks extraction --- src/output/render/blocks.rs | 44 +++++++++++++++++++++++++++++++++++++ src/output/render/mod.rs | 12 +--------- 2 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 src/output/render/blocks.rs diff --git a/src/output/render/blocks.rs b/src/output/render/blocks.rs new file mode 100644 index 0000000..7bd4934 --- /dev/null +++ b/src/output/render/blocks.rs @@ -0,0 +1,44 @@ +use output::cell::TextCell; +use output::colours::Colours; +use fs::fields as f; + + +impl f::Blocks { + pub fn render(&self, colours: &Colours) -> TextCell { + match *self { + f::Blocks::Some(ref blk) => TextCell::paint(colours.blocks, blk.to_string()), + f::Blocks::None => TextCell::blank(colours.punctuation), + } + } +} + + +#[cfg(test)] +pub mod test { + use output::details::Details; + use output::cell::TextCell; + use fs::fields as f; + + use ansi_term::Colour::*; + + + #[test] + fn blocklessness() { + let mut details = Details::default(); + details.colours.punctuation = Green.italic(); + + let blox = f::Blocks::None; + let expected = TextCell::blank(Green.italic()); + assert_eq!(expected, blox.render(&details.colours).into()); + } + + #[test] + fn blockfulity() { + let mut details = Details::default(); + details.colours.blocks = Red.blink(); + + let blox = f::Blocks::Some(3005); + let expected = TextCell::paint_str(Red.blink(), "3005"); + assert_eq!(expected, blox.render(&details.colours).into()); + } +} diff --git a/src/output/render/mod.rs b/src/output/render/mod.rs index dee26ed..746c2a3 100644 --- a/src/output/render/mod.rs +++ b/src/output/render/mod.rs @@ -1,3 +1,4 @@ +mod blocks; mod git; mod groups; mod links; @@ -14,17 +15,6 @@ use datetime::fmt::DateFormat; use locale; - -impl f::Blocks { - pub fn render(&self, colours: &Colours) -> TextCell { - match *self { - f::Blocks::Some(ref blk) => TextCell::paint(colours.blocks, blk.to_string()), - f::Blocks::None => TextCell::blank(colours.punctuation), - } - } -} - - impl f::Inode { pub fn render(&self, colours: &Colours) -> TextCell { TextCell::paint(colours.inode, self.0.to_string())