Comments (4)
Also, it would be great if a table can be fit to the terminal window by specifying columns that can be shrunk.
from prettytable-rs.
That would be great. I'll try to find some time to implement this, unless someone wants to do it.
from prettytable-rs.
Optional there could be inserted a \n
to make a multiline entry if the length is exceeded. This could be default for the terminal width
from prettytable-rs.
I kinda worked around it with the help of textwrap and unicode_width:
[package]
name = "textwrap_prettytable"
version = "0.1.0"
authors = ["Alexander Thaller <[email protected]>"]
[dependencies]
prettytable-rs = "0.7"
unicode-width = "0.1"
[dependencies.textwrap]
version = "0.10"
features = ["term_size"]
#[macro_use]
extern crate prettytable;
extern crate textwrap;
extern crate unicode_width;
use prettytable::{
format,
Table,
};
use unicode_width::UnicodeWidthStr;
fn main() {
let entries = vec![
("first", "first description"),
("second", "second description"),
(
"third",
"third description which is a bit longer than usual and probably has to be wrapped. \
if not it should also be fine.",
),
(
"fourth",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam felis risus, faucibus \
a accumsan a, blandit in sem. Ut venenatis vulputate ante, in volutpat mi pharetra \
non.",
),
];
// We are gonna get the width the description should be wrapped with by getting
// the largest name and substracting that from the terminal width.
let description_width = {
let mut max_realm_width = 0;
for (name, _) in &entries {
// Width of the string largest string + surrounding formatting
// Something like this
// this is a name | The description of the name.
let width = UnicodeWidthStr::width(format!(" {} | ", name).as_str());
if max_realm_width < width {
max_realm_width = width
}
}
let termwidth = textwrap::termwidth();
termwidth - max_realm_width
};
let mut table = Table::new();
table.set_format(*format::consts::FORMAT_NO_BORDER_LINE_SEPARATOR);
table.add_row(row![b -> "Name", b -> "Description"]);
for (name, description) in &entries {
table.add_row(row![name, textwrap::fill(description, description_width),]);
}
table.printstd();
}
from prettytable-rs.
Related Issues (20)
- Using more than one character as separator
- term has security warning, please update HOT 1
- Question: Slice Usage With Row Macro
- Support styling options / colors for borders and separators HOT 2
- Crash due to subtract with overflow HOT 4
- Allow skipping line separators HOT 2
- Mark crate as `deprecated` on crates.io HOT 1
- TableSlice::print_tty() should not panic on I/O errors HOT 1
- output of a table to a string with styles -- is it possible? HOT 5
- Some suggestions to simplify the code
- Replace atty dependency in prettytable-rs due to RUSTSEC-2021-0145 HOT 2
- force casting Vec<T> to &[T] in Table::AsRef is causing trouble HOT 12
- Release 0.10.0 HOT 2
- Make Color optional HOT 1
- Release x.y.z
- Apply dynamic styles to nested table HOT 4
- Could we get some form of Format Macro? HOT 1
- Display Train over Table Object
- .printhtml() method doesnt insert table headers (titles) correctly HOT 2
- Unexpected `FromIterator<Utf8Char> for Vec<u8>` import by just importing prettytable-rs
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prettytable-rs.