Add flag and check whether to print empty table
This commit is contained in:
parent
b1cf058dcc
commit
13768322d2
1 changed files with 16 additions and 2 deletions
|
@ -34,6 +34,7 @@ pub struct TableLister<F: Fn(&FileLockEntry) -> Vec<String>> {
|
||||||
header: Option<Vec<String>>,
|
header: Option<Vec<String>>,
|
||||||
|
|
||||||
with_idx: bool,
|
with_idx: bool,
|
||||||
|
print_empty: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<F: Fn(&FileLockEntry) -> Vec<String>> TableLister<F> {
|
impl<F: Fn(&FileLockEntry) -> Vec<String>> TableLister<F> {
|
||||||
|
@ -43,6 +44,7 @@ impl<F: Fn(&FileLockEntry) -> Vec<String>> TableLister<F> {
|
||||||
line_generator: gen,
|
line_generator: gen,
|
||||||
header: None,
|
header: None,
|
||||||
with_idx: true,
|
with_idx: true,
|
||||||
|
print_empty: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +58,11 @@ impl<F: Fn(&FileLockEntry) -> Vec<String>> TableLister<F> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn print_empty(mut self, b: bool) -> TableLister<F> {
|
||||||
|
self.print_empty = b;
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<F: Fn(&FileLockEntry) -> Vec<String>> Lister for TableLister<F> {
|
impl<F: Fn(&FileLockEntry) -> Vec<String>> Lister for TableLister<F> {
|
||||||
|
@ -81,6 +88,8 @@ impl<F: Fn(&FileLockEntry) -> Vec<String>> Lister for TableLister<F> {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut entries_added = 0;
|
||||||
|
|
||||||
entries.enumerate().fold(Ok(table), |table, (i, entry)| {
|
entries.enumerate().fold(Ok(table), |table, (i, entry)| {
|
||||||
table.and_then(|mut table| {
|
table.and_then(|mut table| {
|
||||||
let mut v = (self.line_generator)(&entry);
|
let mut v = (self.line_generator)(&entry);
|
||||||
|
@ -102,12 +111,17 @@ impl<F: Fn(&FileLockEntry) -> Vec<String>> Lister for TableLister<F> {
|
||||||
}
|
}
|
||||||
|
|
||||||
table.add_row(v.iter().map(|s| Cell::new(s)).collect());
|
table.add_row(v.iter().map(|s| Cell::new(s)).collect());
|
||||||
|
entries_added += 1;
|
||||||
Ok(table)
|
Ok(table)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.and_then(|tbl| {
|
.and_then(|tbl| {
|
||||||
|
if entries_added != 0 && !self.print_empty {
|
||||||
let mut io = stdout();
|
let mut io = stdout();
|
||||||
tbl.print(&mut io).chain_err(|| LEK::IOError)
|
tbl.print(&mut io).chain_err(|| LEK::IOError)
|
||||||
|
} else {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue