Monday morning Links extraction

This commit is contained in:
Benjamin Sago 2017-05-22 08:43:09 +01:00
parent f0cf5b4538
commit eec81c4f48
2 changed files with 82 additions and 9 deletions

View File

@ -0,0 +1,81 @@
use output::cell::TextCell;
use output::colours::Colours;
use fs::fields as f;
use locale;
impl f::Links {
pub fn render(&self, colours: &Colours, numeric: &locale::Numeric) -> TextCell {
let style = if self.multiple { colours.links.multi_link_file }
else { colours.links.normal };
TextCell::paint(style, numeric.format_int(self.count))
}
}
#[cfg(test)]
pub mod test {
use output::details::Details;
use output::cell::{TextCell, DisplayWidth};
use fs::fields as f;
use ansi_term::Colour::*;
use locale;
#[test]
fn regular_file() {
let mut details = Details::default();
details.colours.links.normal = Blue.normal();
let stati = f::Links {
count: 1,
multiple: false,
};
let expected = TextCell {
width: DisplayWidth::from(1),
contents: vec![ Blue.paint("1") ].into(),
};
assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into());
}
#[test]
fn regular_directory() {
let mut details = Details::default();
details.colours.links.normal = Blue.normal();
let stati = f::Links {
count: 3005,
multiple: false,
};
let expected = TextCell {
width: DisplayWidth::from(5),
contents: vec![ Blue.paint("3,005") ].into(),
};
assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into());
}
#[test]
fn popular_file() {
let mut details = Details::default();
details.colours.links.multi_link_file = Blue.on(Red);
let stati = f::Links {
count: 3005,
multiple: true,
};
let expected = TextCell {
width: DisplayWidth::from(5),
contents: vec![ Blue.on(Red).paint("3,005") ].into(),
};
assert_eq!(expected, stati.render(&details.colours, &locale::Numeric::english()).into());
}
}

View File

@ -1,5 +1,6 @@
mod git; mod git;
mod groups; mod groups;
mod links;
mod permissions; mod permissions;
mod size; mod size;
mod users; mod users;
@ -13,15 +14,6 @@ use datetime::fmt::DateFormat;
use locale; use locale;
impl f::Links {
pub fn render(&self, colours: &Colours, numeric: &locale::Numeric) -> TextCell {
let style = if self.multiple { colours.links.multi_link_file }
else { colours.links.normal };
TextCell::paint(style, numeric.format_int(self.count))
}
}
impl f::Blocks { impl f::Blocks {
pub fn render(&self, colours: &Colours) -> TextCell { pub fn render(&self, colours: &Colours) -> TextCell {