summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHomu <homu@barosl.com>2016-01-07 04:03:29 +0900
committerHomu <homu@barosl.com>2016-01-07 04:03:29 +0900
commit72f72540056cfd7c6979af96249ee27147d5df1d (patch)
tree6a1b83c9535f9b3145dc2d83763e66181fcf3f92
parent9662678b30d210500f4620a0ccc8330b8c97b25e (diff)
parent24c150852c7a3f30c78f55097950d6fb4331c7ad (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.yml12
-rw-r--r--src/module/bm/mod.rs3
-rw-r--r--src/module/notes/mod.rs5
-rw-r--r--src/ui/file.rs48
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;