pub use crate::error::Error;
pub use crate::print_table;
use crate::table::generate_table_string_vec;
pub use crate::TableOptions;
use std::{fs::File, io::Write};
#[macro_export]
macro_rules! print_table {
($rows:expr) => {
{
use pretty_table::table::generate_table_string_vec;
let table_rows: Vec<Vec<String>> = $rows.into_iter().map(|row| {
row.into_iter().map(|data| data.into()).collect::<Vec<String>>()
}).collect::<Vec<Vec<String>>>();
for row in generate_table_string_vec(table_rows, None).into_iter() {
println!("{}", row);
}
}
};
($($row:expr), +) => {
{
use pretty_table::table::generate_table_string_vec;
let table_rows: Vec<Vec<String>> = vec![
$($row.into_iter().map(String::from).collect()),+
];
for row in generate_table_string_vec(table_rows, None).into_iter() {
println!("{}", row);
}
}
}
}
pub fn write_table_to_file<S>(filename: S, table_rows: Vec<Vec<S>>) -> Result<(), Error>
where
S: Into<String>,
{
let filename = filename.into();
let rows = table_rows
.into_iter()
.map(|row| {
row.into_iter()
.map(|field| field.into())
.collect::<Vec<String>>()
})
.collect::<Vec<Vec<String>>>();
let prettified_table_rows_vec = generate_table_string_vec(rows, None);
let mut file = File::create(&filename)?;
for row in prettified_table_rows_vec.into_iter() {
writeln!(file, "{}", row)?;
}
Ok(())
}