summaryrefslogtreecommitdiffstats
path: root/src/cell.rs
diff options
context:
space:
mode:
authorRomain <romain.liautaud@snips.ai>2018-05-18 10:59:34 +0200
committerRomain <romain.liautaud@snips.ai>2018-05-18 11:14:19 +0200
commit149f0fd88d16fd9ca17b57e9a29c53b3eeac6277 (patch)
treef8ab746ad1ba2e8be5ba219476dcb7f79b62fd7d /src/cell.rs
parent34c7a91713034e683a727f3650b34d9e392f19e3 (diff)
Fixed cell width issues when using ANSI color codes.
This commit adds a `utils::display_width` function, which is just a wrapper around `UnicodeWidthStr::width` which also takes ANSI color codes into account. This is required when creating cells from strings which are already colored using ANSI color codes (instead of coloring the cells using styles). Since color codes are of the form \u{1b}[ ... m, but UnicodeWidthStr::width only takes the first \u{1b} into account, this would create cell width issues.
Diffstat (limited to 'src/cell.rs')
-rw-r--r--src/cell.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cell.rs b/src/cell.rs
index 255c3fd..cca22d4 100644
--- a/src/cell.rs
+++ b/src/cell.rs
@@ -2,9 +2,9 @@
use std::io::{Write, Error};
use std::string::ToString;
-use unicode_width::UnicodeWidthStr;
use super::{Attr, Terminal, color};
use super::format::Alignment;
+use super::utils::display_width;
use super::utils::print_align;
/// Represent a table cell containing a string.
@@ -26,7 +26,7 @@ impl Cell {
let content: Vec<String> = string.lines().map(|x| x.to_string()).collect();
let mut width = 0;
for cont in &content {
- let l = UnicodeWidthStr::width(&cont[..]);
+ let l = display_width(&cont[..]);
if l > width {
width = l;
}