diff options
author | Homu <homu@barosl.com> | 2016-01-07 04:03:29 +0900 |
---|---|---|
committer | Homu <homu@barosl.com> | 2016-01-07 04:03:29 +0900 |
commit | 72f72540056cfd7c6979af96249ee27147d5df1d (patch) | |
tree | 6a1b83c9535f9b3145dc2d83763e66181fcf3f92 | |
parent | 9662678b30d210500f4620a0ccc8330b8c97b25e (diff) | |
parent | 24c150852c7a3f30c78f55097950d6fb4331c7ad (diff) |
Auto merge of #67 - matthiasbeyer:tableprinter-pretty, r=matthiasbeyer
Tableprinter pretty
Support for printing plain ASCII-Tables without borders and such.
-rw-r--r-- | etc/cli.yml | 12 | ||||
-rw-r--r-- | src/module/bm/mod.rs | 3 | ||||
-rw-r--r-- | src/module/notes/mod.rs | 5 | ||||
-rw-r--r-- | src/ui/file.rs | 48 |
4 files changed, 55 insertions, 13 deletions
diff --git a/etc/cli.yml b/etc/cli.yml index 4d222a05..1ed39342 100644 --- a/etc/cli.yml +++ b/etc/cli.yml @@ -96,6 +96,12 @@ subcommands: version: 0.1 author: Matthias Beyer <mail@beyermatthias.de> args: + - pretty: + long: pretty + help: Print table with ASCII-border + required: false + takes_value: false + - match: short: m long: match @@ -402,6 +408,12 @@ subcommands: version: 0.1 author: Matthias Beyer <mail@beyermatthias.de> args: + - pretty: + long: pretty + help: Print table with ASCII-border + required: false + takes_value: false + - namegrep: short: n long: name diff --git a/src/module/bm/mod.rs b/src/module/bm/mod.rs index 6f25bc8d..f0663290 100644 --- a/src/module/bm/mod.rs +++ b/src/module/bm/mod.rs @@ -130,7 +130,8 @@ impl<'a> BM<'a> { .load_for_module(self, &self.parser) .into_iter() .filter(|file| filter.filter_file(file)); - let printer = TablePrinter::new(self.rt.is_verbose(), self.rt.is_debugging()); + let pretty = matches.is_present("pretty"); + let printer = TablePrinter::new(self.rt.is_verbose(), self.rt.is_debugging(), pretty); printer.print_files_custom(files, &|file| { diff --git a/src/module/notes/mod.rs b/src/module/notes/mod.rs index 17830890..ca21cbae 100644 --- a/src/module/notes/mod.rs +++ b/src/module/notes/mod.rs @@ -274,7 +274,9 @@ impl<'a> Notes<'a> { hash_filter.or(Box::new(head_filter)).and(Box::new(text_filter)).and(Box::new(tags_filter)) }; - let printer = TablePrinter::new(self.rt.is_verbose(), self.rt.is_debugging()); + let pretty = matches.is_present("pretty"); + debug!("Printing pretty table = {}", pretty); + let printer = TablePrinter::new(self.rt.is_verbose(), self.rt.is_debugging(), pretty); printer.print_files_custom( self.rt.store() @@ -299,7 +301,6 @@ impl<'a> Notes<'a> { fn command_links(&self, matches: &ArgMatches) -> bool { use ansi_term::Colour::{Red, Green}; use module::helpers::content::markdown::MarkdownParser; - use ui::file::FilePrinter; use util::is_url; use prettytable::Table; use prettytable::row::Row; 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; |