mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-12 20:16:49 +00:00
Added punctuation preference
Create test.rs Delete test.rs Fixed compile error. Trying a possible fix on an arithmetic overflow another try at the test failure... passed all tests. Added tests and cleaned up logic as per nrc's critiques Delete string.rs.old Delete string.rs.bk Made changes as per nrc's requests. Update string_punctuation.rs Update string_punctuation.rs fixed logical redundancy
This commit is contained in:
parent
9ab2d95119
commit
2f7acf00e5
@ -39,6 +39,7 @@ pub fn rewrite_string<'a>(s: &str, fmt: &StringFormat<'a>) -> Option<String> {
|
||||
|
||||
let graphemes = UnicodeSegmentation::graphemes(&*stripped_str, false).collect::<Vec<&str>>();
|
||||
let indent = fmt.offset.to_string(fmt.config);
|
||||
let punctuation = ":,;.";
|
||||
|
||||
let mut cur_start = 0;
|
||||
let mut result = String::with_capacity(round_up_to_power_of_two(s.len()));
|
||||
@ -62,11 +63,22 @@ pub fn rewrite_string<'a>(s: &str, fmt: &StringFormat<'a>) -> Option<String> {
|
||||
while !graphemes[cur_end - 1].trim().is_empty() {
|
||||
cur_end -= 1;
|
||||
if cur_end - cur_start < MIN_STRING {
|
||||
// We can't break at whitespace, fall back to splitting
|
||||
// anywhere that doesn't break an escape sequence.
|
||||
cur_end = cur_start + max_chars;
|
||||
while graphemes[cur_end - 1] == "\\" {
|
||||
cur_end -= 1;
|
||||
// Look for punctuation to break on.
|
||||
while (!punctuation.contains(graphemes[cur_end - 1])) && cur_end > 1 {
|
||||
if cur_end > 1 {
|
||||
cur_end -= 1;
|
||||
}
|
||||
}
|
||||
// We can't break at whitespace or punctuation, fall back to splitting
|
||||
// anywhere that doesn't break an escape sequence.
|
||||
if cur_end < cur_start + MIN_STRING {
|
||||
cur_end = cur_start + max_chars;
|
||||
while graphemes[cur_end - 1] == "\\" {
|
||||
if cur_end > 1 {
|
||||
cur_end -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
5
tests/source/string_punctuation.rs
Normal file
5
tests/source/string_punctuation.rs
Normal file
@ -0,0 +1,5 @@
|
||||
fn main() {
|
||||
println!("ThisIsAReallyLongStringWithNoSpaces.It_should_prefer_to_break_onpunctuation:Likethisssssssssssss");
|
||||
format!("{}__{}__{}ItShouldOnlyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyNoticeSemicolonsPeriodsColonsAndCommasAndResortToMid-CharBreaksAfterPunctuation{}{}",x,y,z,a,b);
|
||||
println!("aaaaaaaaaaaaaaaaaaaaaaaaaaaaalhijalfhiigjapdighjapdigjapdighdapighapdighpaidhg;adopgihadoguaadbadgad,qeoihapethae8t0aet8haetadbjtaeg;ooeouthaoeutgadlgajduabgoiuadogabudogubaodugbadgadgadga;adoughaoeugbaouea");
|
||||
}
|
14
tests/target/string_punctuation.rs
Normal file
14
tests/target/string_punctuation.rs
Normal file
@ -0,0 +1,14 @@
|
||||
fn main() {
|
||||
println!("ThisIsAReallyLongStringWithNoSpaces.It_should_prefer_to_break_onpunctuation:\
|
||||
Likethisssssssssssss");
|
||||
format!("{}__{}__{}ItShouldOnlyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyNoticeSemicolonsPeriodsColo\
|
||||
nsAndCommasAndResortToMid-CharBreaksAfterPunctuation{}{}",
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
a,
|
||||
b);
|
||||
println!("aaaaaaaaaaaaaaaaaaaaaaaaaaaaalhijalfhiigjapdighjapdigjapdighdapighapdighpaidhg;\
|
||||
adopgihadoguaadbadgad,qeoihapethae8t0aet8haetadbjtaeg;\
|
||||
ooeouthaoeutgadlgajduabgoiuadogabudogubaodugbadgadgadga;adoughaoeugbaouea");
|
||||
}
|
Loading…
Reference in New Issue
Block a user