| Crates.io | taalika |
| lib.rs | taalika |
| version | 0.1.6 |
| created_at | 2021-12-21 23:32:26.026542+00 |
| updated_at | 2021-12-21 23:49:00.287876+00 |
| description | Plain text tables, aligned automatically (fork of tabular) |
| homepage | |
| repository | https://github.com/sunshowers-code/taalika |
| max_upload_size | |
| id | 501389 |
| size | 52,575 |
Builds plain, automatically-aligned tables of monospaced text.
This is basically what you want if you are implementing ls.
use taalika::{Table, Row};
use std::path::Path;
fn ls(dir: &Path) -> ::std::io::Result<()> {
let mut table = Table::new("{:>} {:<}{:<} {:<}");
for entry_result in ::std::fs::read_dir(dir)? {
let entry = entry_result?;
let metadata = entry.metadata()?;
table.add_row(Row::new()
.with_cell(metadata.len())
.with_cell(if metadata.permissions().readonly() {"r"} else {""})
.with_cell(if metadata.is_dir() {"d"} else {""})
.with_cell(entry.path().display()));
}
print!("{}", table);
Ok(())
}
ls(Path::new("target")).unwrap();
produces something like
1198 target/.rustc_info.json
1120 d target/doc
192 d target/package
1056 d target/debug
The Table::with_heading() and Table::add_heading() methods add
lines that span all columns.
The row! macro builds a row with a fixed number of columns
using less syntax.
The Table::set_line_end() method allows changing the line ending
to include a carriage return (or whatever you want).
The Row::with_ansi_cell and Row::add_ansi_cell methods can be
used to add cells with ANSI color codes, and still have their widths be
computed correctly.
taalika is on crates.io.
Feature unicode-width is used to compute the width of columns in terms of
Unicode graphemes. It is enabled by default and depends on the
unicode-width crate.
Note that without unicode-width, alignment will be based on the count of the
std::str::Chars iterator.
This crate supports Rust version 1.46.0 and later.
You may also want:
tabular - taalika is a fork of this
crate with additional features.
text-tables – This is more automatic than tabular. You give it an array of arrays, it renders a nice table with borders. Tabular doesn't do borders.
prettytable — This has an API more similar to tabular’s in terms of building a table, but it does a lot more, including, color, borders, and CSV import.