summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen S <ogham@bsago.me>2016-10-30 15:50:09 +0000
committerBen S <ogham@bsago.me>2016-10-30 15:50:09 +0000
commit86065f832d5b82320022807bfb02a48f43bc1930 (patch)
tree997bf878e67580e9b7627cb0409f7341394be82d
parent91e8ef5c7802b3305e0e3fcb9d001f42f35670f8 (diff)
File size colours on a scale
This adds an option (always on at the moment) to use a colour scale of green to yellow to orange for the file size field instead of always green. See #65.
-rw-r--r--src/options/view.rs12
-rw-r--r--src/output/colours.rs29
2 files changed, 33 insertions, 8 deletions
diff --git a/src/options/view.rs b/src/options/view.rs
index ed22111..c64fac4 100644
--- a/src/options/view.rs
+++ b/src/options/view.rs
@@ -34,12 +34,13 @@ impl View {
}
else {
let term_colours = try!(TerminalColours::deduce(matches));
+ let scale = true;
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(),
+ TerminalColours::Always => Colours::colourful(scale),
TerminalColours::Never => Colours::plain(),
TerminalColours::Automatic => {
if dimensions().is_some() {
- Colours::colourful()
+ Colours::colourful(scale)
}
else {
Colours::plain()
@@ -84,12 +85,13 @@ impl View {
let other_options_scan = || {
let term_colours = try!(TerminalColours::deduce(matches));
let term_width = try!(TerminalWidth::deduce());
+ let scale = true;
if let Some(&width) = term_width.as_ref() {
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(),
+ TerminalColours::Always => Colours::colourful(scale),
TerminalColours::Never => Colours::plain(),
- TerminalColours::Automatic => Colours::colourful(),
+ TerminalColours::Automatic => Colours::colourful(scale),
};
if matches.opt_present("oneline") {
@@ -132,7 +134,7 @@ impl View {
// fallback to the lines view.
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(),
+ TerminalColours::Always => Colours::colourful(scale),
TerminalColours::Never => Colours::plain(),
TerminalColours::Automatic => Colours::plain(),
};
diff --git a/src/output/colours.rs b/src/output/colours.rs
index 257e40e..d9510ac 100644
--- a/src/output/colours.rs
+++ b/src/output/colours.rs
@@ -4,6 +4,8 @@ use ansi_term::Colour::{Red, Green, Yellow, Blue, Cyan, Purple, Fixed};
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct Colours {
+ pub scale: bool,
+
pub filetypes: FileTypes,
pub perms: Permissions,
pub size: Size,
@@ -96,8 +98,10 @@ impl Colours {
Colours::default()
}
- pub fn colourful() -> Colours {
+ pub fn colourful(scale: bool) -> Colours {
Colours {
+ scale: scale,
+
filetypes: FileTypes {
normal: Style::default(),
directory: Blue.bold(),
@@ -170,7 +174,26 @@ impl Colours {
}
}
- pub fn file_size(&self, _size: u64) -> Style {
- self.size.numbers
+ pub fn file_size(&self, size: u64) -> Style {
+ if self.scale {
+ if size < 1024 {
+ Fixed(118).normal()
+ }
+ else if size < 1024 * 1024 {
+ Fixed(190).normal()
+ }
+ else if size < 1024 * 1024 * 1024 {
+ Fixed(226).normal()
+ }
+ else if size < 1024 * 1024 * 1024 * 1024 {
+ Fixed(220).normal()
+ }
+ else {
+ Fixed(214).normal()
+ }
+ }
+ else {
+ self.size.numbers
+ }
}
}