actually, use both

This commit is contained in:
Arne Keller 2021-03-28 15:03:18 +02:00
parent 2d485d6b34
commit 2f57befcd2
3 changed files with 6 additions and 3 deletions

View File

@ -17,4 +17,5 @@ keywords = ["ascii", "table"]
colorful = "0.2"
[dependencies]
unicode-segmentation = "1.7.1"
unicode-width = "0.1.8"

View File

@ -58,6 +58,7 @@ mod test;
use std::collections::BTreeMap;
use std::fmt::Display;
use unicode_segmentation::UnicodeSegmentation;
use unicode_width::UnicodeWidthStr;
const SE: &str = "";
@ -398,7 +399,8 @@ impl SmartString {
fn char_len(&self) -> usize {
self.fragments.iter()
.filter(|(visible, _)| *visible)
.map(|(_, string)| UnicodeWidthStr::width(string.as_str()))
.map(|(_, string)| UnicodeSegmentation::graphemes(string.as_str(), true)
.map(|x| if UnicodeWidthStr::width(x) > 1 { 2 } else { 1 }).sum::<usize>())
.sum()
}

View File

@ -335,12 +335,12 @@ fn show_one_character_for_header2() {
#[test]
fn cube_with_partial_content() {
let config = cube_config();
let input: Vec<&[&str]> = vec![&["1", "2", "😞"], &["4", "5"], &["7"]];
let input: Vec<&[&str]> = vec![&["1", "2", "😞"], &["4", "5", "👩‍🔬"], &["7"]];
let expected = "┌───┬───┬────┐\n\
a b c \n\
\n\
1 2 😞 \n\
4 5 \n\
4 5 👩🔬 \n\
7 \n\
\n";