diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-24 12:09:18 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-24 12:12:30 +0200 |
| commit | cc477dfa74b78511f96cae5b8b39c3ea391d3779 (patch) | |
| tree | d8b1c1904250cd07ab542e190af7552894200f51 | |
| parent | ae63a3e400970a895d03ec1ef359ba86217c854b (diff) | |
| download | rust-cc477dfa74b78511f96cae5b8b39c3ea391d3779.tar.gz rust-cc477dfa74b78511f96cae5b8b39c3ea391d3779.zip | |
Added note that there is still more to do on 5516.
Also added regression test for the byte vs codepoint issues that the previous commit fixes.
| -rw-r--r-- | src/libextra/getopts.rs | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/libextra/getopts.rs b/src/libextra/getopts.rs index f5efa940530..87aab3fbae2 100644 --- a/src/libextra/getopts.rs +++ b/src/libextra/getopts.rs @@ -690,7 +690,7 @@ 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 = str::count_chars(row, 0, row.len()); if rowlen < 24 { @@ -708,14 +708,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)); @@ -1581,4 +1581,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.51€ in + some parts of Europe. +"; + + let usage = groups::usage("Usage: fruits", optgroups); + + debug!("expected: <<%s>>", expected); + debug!("generated: <<%s>>", usage); + assert!(usage == expected) + } } |
