Get the list of file extensions from the Options

The FileExtensions in the FileName is now a reference to the one in the original FileStyle, which gets put there in the options module.

This allows the extensions to be derived from the user, somehow, in the future when that part’s done.
This commit is contained in:
Benjamin Sago 2017-07-10 14:01:38 +01:00
parent 0d8d723408
commit c29170e345
3 changed files with 12 additions and 6 deletions

View File

@ -7,6 +7,7 @@
use fs::File;
#[derive(Debug)]
pub struct FileExtensions;
impl FileExtensions {

View File

@ -2,6 +2,7 @@ use std::env::var_os;
use getopts;
use info::filetype::FileExtensions;
use output::Colours;
use output::{grid, details};
use output::table::{TimeTypes, Environment, SizeFormat, Options as TableOptions};
@ -373,7 +374,8 @@ impl Colours {
impl FileStyle {
fn deduce(matches: &getopts::Matches) -> FileStyle {
let classify = Classify::deduce(matches);
FileStyle { classify }
let exts = FileExtensions;
FileStyle { classify, exts }
}
}

View File

@ -10,22 +10,25 @@ use output::cell::TextCellContents;
/// Basically a file name factory.
#[derive(PartialEq, Debug)]
#[derive(Debug)]
pub struct FileStyle {
/// Whether to append file class characters to file names.
pub classify: Classify,
/// Mapping of file extensions to colours, to highlight regular files.
pub exts: FileExtensions,
}
impl FileStyle {
/// Create a new `FileName` that prints the given files name, painting it
/// with the remaining arguments.
pub fn for_file<'a, 'dir>(&self, file: &'a File<'dir>, colours: &'a Colours) -> FileName<'a, 'dir> {
pub fn for_file<'a, 'dir>(&'a self, file: &'a File<'dir>, colours: &'a Colours) -> FileName<'a, 'dir> {
FileName {
file, colours,
exts: FileExtensions,
link_style: LinkStyle::JustFilenames,
exts: &self.exts,
classify: self.classify,
target: if file.is_link() { Some(file.link_target()) }
else { None }
@ -90,7 +93,7 @@ pub struct FileName<'a, 'dir: 'a> {
classify: Classify,
/// Mapping of file extensions to colours, to highlight regular files.
exts: FileExtensions,
exts: &'a FileExtensions,
}
@ -142,7 +145,7 @@ impl<'a, 'dir> FileName<'a, 'dir> {
target: None,
link_style: LinkStyle::FullLinkPaths,
classify: Classify::JustFilenames,
exts: FileExtensions,
exts: self.exts,
};
for bit in target.coloured_file_name() {