diff options
| author | Michael Howell <michael@notriddle.com> | 2024-07-06 19:05:28 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2024-07-29 08:46:25 -0700 |
| commit | 9186001f3491c0eb996de6f61a457cecfb089333 (patch) | |
| tree | e914653d9b874bc24ded09cc479400495a3059dd | |
| parent | 0d0e18e7f6e5f3278d897123e78271cce95de863 (diff) | |
rustdoc: avoid redundant HTML when there's already line breaks
| -rw-r--r-- | src/librustdoc/html/escape.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/html/escape/tests.rs | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/librustdoc/html/escape.rs b/src/librustdoc/html/escape.rs index 94414913163..3e20c5b322b 100644 --- a/src/librustdoc/html/escape.rs +++ b/src/librustdoc/html/escape.rs @@ -97,6 +97,12 @@ impl<'a> fmt::Display for EscapeBodyTextWithWbr<'a> { let _ = it.next(); // don't insert wbr before first char while let Some((i, s)) = it.next() { let pk = it.peek(); + if s.chars().all(|c| c.is_whitespace()) { + // don't need "First <wbr>Second"; the space is enough + EscapeBodyText(&text[last..i]).fmt(fmt)?; + last = i; + continue; + } let is_uppercase = || s.chars().any(|c| c.is_uppercase()); let next_is_uppercase = || pk.map_or(true, |(_, t)| t.chars().any(|c| c.is_uppercase())); diff --git a/src/librustdoc/html/escape/tests.rs b/src/librustdoc/html/escape/tests.rs index f99a2a693a6..7933f23eb74 100644 --- a/src/librustdoc/html/escape/tests.rs +++ b/src/librustdoc/html/escape/tests.rs @@ -9,6 +9,10 @@ fn escape_body_text_with_wbr() { // real(istic) examples assert_eq!(&E("FirstSecond").to_string(), "First<wbr>Second"); assert_eq!(&E("First_Second").to_string(), "First<wbr>_Second"); + assert_eq!(&E("First Second").to_string(), "First Second"); + assert_eq!(&E("First HSecond").to_string(), "First HSecond"); + assert_eq!(&E("First HTTPSecond").to_string(), "First HTTP<wbr>Second"); + assert_eq!(&E("First SecondThird").to_string(), "First Second<wbr>Third"); assert_eq!(&E("First<T>_Second").to_string(), "First<<wbr>T><wbr>_Second"); assert_eq!(&E("first_second").to_string(), "first<wbr>_second"); assert_eq!(&E("MY_CONSTANT").to_string(), "MY<wbr>_CONSTANT"); |
