Browse Source

Remove dependency between file and output mods

By removing the `File#file_name_width` method, we can make the file module
have no dependency on the output module -- in other words, the model (file)
and the view (output) are now separate again!
Benjamin Sago 10 years ago
parent
commit
88653a00eb
3 changed files with 4 additions and 13 deletions
  1. 0 10
      src/file.rs
  2. 2 2
      src/output/details.rs
  3. 2 1
      src/output/grid.rs

+ 0 - 10
src/file.rs

@@ -8,7 +8,6 @@ use std::os::unix::fs::{MetadataExt, PermissionsExt};
 use std::path::{Component, Path, PathBuf};
 
 use dir::Dir;
-use output::DisplayWidth;
 
 use self::fields as f;
 
@@ -179,15 +178,6 @@ impl<'dir> File<'dir> {
         path_prefix
     }
 
-    /// The Unicode 'display width' of the filename.
-    ///
-    /// This is related to the number of graphemes in the string: most
-    /// characters are 1 columns wide, but in some contexts, certain
-    /// characters are actually 2 columns wide.
-    pub fn file_name_width(&self) -> DisplayWidth {
-        DisplayWidth::from(&*self.name)
-    }
-
     /// Assuming the current file is a symlink, follows the link and
     /// returns a File object from the path the link points to.
     ///

+ 2 - 2
src/output/details.rs

@@ -281,7 +281,7 @@ impl Details {
             let mut errors = egg.errors;
 
             let name = TextCell {
-                length: egg.file.file_name_width(),
+                length:   DisplayWidth::from(&*egg.file.name),
                 contents: filename(egg.file, &self.colours, true),
             };
 
@@ -461,7 +461,7 @@ impl<U> Table<U> where U: Users {
 
     pub fn filename_cell(&self, file: File, links: bool) -> TextCell {
         TextCell {
-            length:   file.file_name_width(),
+            length:   DisplayWidth::from(&*file.name),
             contents: filename(file, &self.colours, links),
         }
     }

+ 2 - 1
src/output/grid.rs

@@ -1,6 +1,7 @@
 use colours::Colours;
 use file::File;
 use filetype::file_colour;
+use output::DisplayWidth;
 
 use term_grid as grid;
 
@@ -27,7 +28,7 @@ impl Grid {
         for file in files.iter() {
             grid.add(grid::Cell {
                 contents:  file_colour(&self.colours, file).paint(&*file.name).to_string(),
-                width:     *file.file_name_width(),
+                width:     *DisplayWidth::from(&*file.name),
             });
         }