Skip to content

Commit

Permalink
auto merge of #8710 : pnkfelix/rust/fsk-issue5516-codepoint-fix, r=al…
Browse files Browse the repository at this point in the history
…excrichton

...bytes.

(removing previous note about eff-eye-ex'ing #5516 since it actually does not do so, it just gets us half-way.)
  • Loading branch information
bors committed Aug 25, 2013
2 parents bed8489 + ca0e7b1 commit 6a649e6
Showing 1 changed file with 32 additions and 5 deletions.
37 changes: 32 additions & 5 deletions src/libextra/getopts.rs
Expand Up @@ -689,9 +689,9 @@ pub mod groups {
}
}

// FIXME: #5516
// FIXME: #5516 should be graphemes not codepoints
// here we just need to indent the start of the description
let rowlen = row.len();
let rowlen = row.char_len();
if rowlen < 24 {
do (24 - rowlen).times {
row.push_char(' ')
Expand All @@ -707,14 +707,14 @@ pub mod groups {
desc_normalized_whitespace.push_char(' ');
}

// FIXME: #5516
// FIXME: #5516 should be graphemes not codepoints
let mut desc_rows = ~[];
do each_split_within(desc_normalized_whitespace, 54) |substr| {
desc_rows.push(substr.to_owned());
true
};

// FIXME: #5516
// FIXME: #5516 should be graphemes not codepoints
// wrapped description
row.push_str(desc_rows.connect(desc_sep));

Expand Down Expand Up @@ -798,7 +798,7 @@ pub mod groups {
cont
};

ss.iter().enumerate().advance(|x| machine(x));
ss.char_offset_iter().advance(|x| machine(x));

// Let the automaton 'run out' by supplying trailing whitespace
while cont && match state { B | C => true, A => false } {
Expand Down Expand Up @@ -1580,4 +1580,31 @@ Options:
debug!("generated: <<%s>>", usage);
assert!(usage == expected)
}

#[test]
fn test_groups_usage_description_multibyte_handling() {
let optgroups = ~[
groups::optflag("k", "k\u2013w\u2013",
"The word kiwi is normally spelled with two i's"),
groups::optflag("a", "apple",
"This \u201Cdescription\u201D has some characters that could \
confuse the line wrapping; an apple costs 0.51€ in some parts of Europe."),
];

let expected =
~"Usage: fruits

Options:
-k --k–w– The word kiwi is normally spelled with two i's
-a --apple This “description” has some characters that could
confuse the line wrapping; an apple costs 0.51in
some parts of Europe.
";

let usage = groups::usage("Usage: fruits", optgroups);

debug!("expected: <<%s>>", expected);
debug!("generated: <<%s>>", usage);
assert!(usage == expected)
}
}

0 comments on commit 6a649e6

Please sign in to comment.