diff options
Diffstat (limited to 'src/ui/file.rs')
-rw-r--r-- | src/ui/file.rs | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/src/ui/file.rs b/src/ui/file.rs index ce1cd27e..ab9e7943 100644 --- a/src/ui/file.rs +++ b/src/ui/file.rs @@ -10,8 +10,6 @@ use storage::file::File; */ pub trait FilePrinter { - fn new(verbose: bool, debug: bool) -> Self; - /* * Print a single file */ @@ -50,14 +48,18 @@ struct DebugPrinter { debug: bool, } -impl FilePrinter for DebugPrinter { +impl DebugPrinter { - fn new(_: bool, debug: bool) -> DebugPrinter { + pub fn new(debug: bool) -> DebugPrinter { DebugPrinter { debug: debug, } } +} + +impl FilePrinter for DebugPrinter { + fn print_file(&self, f: Rc<RefCell<File>>) { if self.debug { debug!("[DebugPrinter] ->\n{:?}", f); @@ -82,15 +84,19 @@ struct SimplePrinter { debug: bool, } -impl FilePrinter for SimplePrinter { +impl SimplePrinter { - fn new(verbose: bool, debug: bool) -> SimplePrinter { + pub fn new(verbose: bool, debug: bool) -> SimplePrinter { SimplePrinter { debug: debug, verbose: verbose, } } +} + +impl FilePrinter for SimplePrinter { + fn print_file(&self, f: Rc<RefCell<File>>) { use ansi_term::Colour::Cyan; @@ -124,29 +130,43 @@ impl FilePrinter for SimplePrinter { * Table printer to print file information in a nice ASCII-table */ pub struct TablePrinter { - sp: SimplePrinter, + sp: SimplePrinter, + pretty: bool, } -impl FilePrinter for TablePrinter { +impl TablePrinter { - fn new(verbose: bool, debug: bool) -> TablePrinter { + pub fn new(verbose: bool, debug: bool, pretty: bool) -> TablePrinter { TablePrinter { - sp: SimplePrinter::new(verbose, debug), + sp: SimplePrinter::new(verbose, debug), + pretty: pretty, } } +} + +impl FilePrinter for TablePrinter { + fn print_file(&self, f: Rc<RefCell<File>>) { self.sp.print_file(f); } fn print_files<I: Iterator<Item = Rc<RefCell<File>>>>(&self, files: I) { use prettytable::Table; + use prettytable::format::TableFormat; use prettytable::row::Row; use prettytable::cell::Cell; let titles = row!["File#", "Owner", "ID"]; let mut tab = Table::new(); + + if !self.pretty { + let plain_format = TableFormat::new(' ', None, None); + debug!("Setting plain format for table"); + tab.set_format(plain_format); + } + tab.set_titles(titles); let mut i = 0; @@ -175,12 +195,20 @@ impl FilePrinter for TablePrinter { F: Fn(Rc<RefCell<File>>) -> Vec<String> { use prettytable::Table; + use prettytable::format::TableFormat; use prettytable::row::Row; use prettytable::cell::Cell; let titles = row!["#", "Module", "ID", "..."]; let mut tab = Table::new(); + + if !self.pretty { + let plain_format = TableFormat::new(' ', None, None); + debug!("Setting plain format for table"); + tab.set_format(plain_format); + } + tab.set_titles(titles); let mut i = 0; |