summaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
authorBen S <ogham@bsago.me>2015-02-10 16:08:10 +0000
committerBen S <ogham@bsago.me>2015-02-10 16:08:10 +0000
commit21ac16f80897703ddcd8083c1655bf10e15d5da9 (patch)
tree9ff81b5dd196c1ab5849f5f52423ac100b2462d7 /src/output
parentf3c3a02e98c5f9029a51c2ed4fe389d96efe22ff (diff)
Format file size in bytes with the user's locale
Use the `locale` crate as a dependency to read in the set thousands-separator character, and pass this to the file size column, which uses it to add the separators in. en_GB uses "," fr_FR uses "" and just displays the numbers in one go.
Diffstat (limited to 'src/output')
-rw-r--r--src/output/details.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/output/details.rs b/src/output/details.rs
index 422a7ca..973a5e9 100644
--- a/src/output/details.rs
+++ b/src/output/details.rs
@@ -4,6 +4,7 @@ use file::{File, GREY};
use options::{Columns, FileFilter};
use users::OSUsers;
+use locale;
use ansi_term::Style::Plain;
#[derive(PartialEq, Debug, Copy)]
@@ -24,9 +25,10 @@ impl Details {
// padding the fields during output.
let columns = self.columns.for_dir(dir);
+ let locale = locale::Numeric::load_user_locale().unwrap_or_else(|_| locale::Numeric::default());
let mut cache = OSUsers::empty_cache();
let mut table = Vec::new();
- self.get_files(&columns[], &mut cache, &mut table, files, 0);
+ self.get_files(&columns[], &mut cache, &locale, &mut table, files, 0);
if self.header {
let row = Row {
@@ -73,12 +75,12 @@ impl Details {
}
}
- fn get_files(&self, columns: &[Column], cache: &mut OSUsers, dest: &mut Vec<Row>, src: &[File], depth: usize) {
+ fn get_files(&self, columns: &[Column], cache: &mut OSUsers, locale: &locale::Numeric, dest: &mut Vec<Row>, src: &[File], depth: usize) {
for (index, file) in src.iter().enumerate() {
let row = Row {
depth: depth,
- cells: columns.iter().map(|c| file.display(c, cache)).collect(),
+ cells: columns.iter().map(|c| file.display(c, cache, locale)).collect(),
name: file.file_name_view(),
last: index == src.len() - 1,
children: file.this.is_some(),
@@ -90,7 +92,7 @@ impl Details {
if let Some(ref dir) = file.this {
let mut files = dir.files(true);
self.filter.transform_files(&mut files);
- self.get_files(columns, cache, dest, files.as_slice(), depth + 1);
+ self.get_files(columns, cache, locale, dest, files.as_slice(), depth + 1);
}
}
}