diff options
| author | Michael Howell <michael@notriddle.com> | 2024-07-06 19:07:22 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2024-07-29 10:30:56 -0700 |
| commit | 1d339b07ca84743710dc87dc0bc4c0597006ed59 (patch) | |
| tree | af74e9afe05e1faefefb6480682873d551cb7274 | |
| parent | 9186001f3491c0eb996de6f61a457cecfb089333 (diff) | |
| download | rust-1d339b07ca84743710dc87dc0bc4c0597006ed59.tar.gz rust-1d339b07ca84743710dc87dc0bc4c0597006ed59.zip | |
rustdoc: use `<wbr>` in sidebar headers
This also improves sidebar layout, so instead of
BTreeM
ap
you get this
BTree
Map
| -rw-r--r-- | src/librustdoc/html/layout.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render/sidebar.rs | 16 | ||||
| -rw-r--r-- | src/librustdoc/html/templates/page.html | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/templates/sidebar.html | 6 |
5 files changed, 24 insertions, 4 deletions
diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs index 7dfcc88398f..780cda9b1cd 100644 --- a/src/librustdoc/html/layout.rs +++ b/src/librustdoc/html/layout.rs @@ -69,6 +69,8 @@ struct PageLayout<'a> { display_krate_version_extra: &'a str, } +pub(crate) use crate::html::render::sidebar::filters; + pub(crate) fn render<T: Print, S: Print>( layout: &Layout, page: &Page<'_>, diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index aaac8678264..b5cc495ce41 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -30,7 +30,7 @@ mod tests; mod context; mod print_item; -mod sidebar; +pub(crate) mod sidebar; mod span_map; mod type_layout; mod write_shared; diff --git a/src/librustdoc/html/render/sidebar.rs b/src/librustdoc/html/render/sidebar.rs index 6e826446c0e..101cc839f09 100644 --- a/src/librustdoc/html/render/sidebar.rs +++ b/src/librustdoc/html/render/sidebar.rs @@ -77,6 +77,22 @@ impl<'a> Link<'a> { } } +pub(crate) mod filters { + use std::fmt::Display; + + use rinja::filters::Safe; + + use crate::html::escape::EscapeBodyTextWithWbr; + use crate::html::render::display_fn; + pub(crate) fn wrapped<T>(v: T) -> rinja::Result<Safe<impl Display>> + where + T: Display, + { + let string = v.to_string(); + Ok(Safe(display_fn(move |f| EscapeBodyTextWithWbr(&string).fmt(f)))) + } +} + pub(super) fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer) { let blocks: Vec<LinkBlock<'_>> = match *it.kind { clean::StructItem(ref s) => sidebar_struct(cx, it, s), diff --git a/src/librustdoc/html/templates/page.html b/src/librustdoc/html/templates/page.html index cdf01fa7a97..65c4304e202 100644 --- a/src/librustdoc/html/templates/page.html +++ b/src/librustdoc/html/templates/page.html @@ -98,7 +98,7 @@ </a> {# #} {% endif %} <h2> {# #} - <a href="{{page.root_path|safe}}{{display_krate_with_trailing_slash|safe}}index.html">{{display_krate}}</a> {# #} + <a href="{{page.root_path|safe}}{{display_krate_with_trailing_slash|safe}}index.html">{{display_krate|wrapped|safe}}</a> {# #} {% if !display_krate_version_number.is_empty() %} <span class="version">{{+ display_krate_version_number}}</span> {% endif %} diff --git a/src/librustdoc/html/templates/sidebar.html b/src/librustdoc/html/templates/sidebar.html index 3251b4c14c9..025220ab415 100644 --- a/src/librustdoc/html/templates/sidebar.html +++ b/src/librustdoc/html/templates/sidebar.html @@ -1,6 +1,6 @@ {% if !title.is_empty() %} <h2 class="location"> {# #} - <a href="#">{{title_prefix}}{{title}}</a> {# #} + <a href="#">{{title_prefix}}{{title|wrapped|safe}}</a> {# #} </h2> {% endif %} <div class="sidebar-elems"> @@ -15,7 +15,9 @@ {% for block in blocks %} {% if block.should_render() %} {% if !block.heading.name.is_empty() %} - <h3><a href="#{{block.heading.href|safe}}">{{block.heading.name}}</a></h3> + <h3><a href="#{{block.heading.href|safe}}"> {# #} + {{block.heading.name|wrapped|safe}} {# #} + </a></h3> {# #} {% endif %} {% if !block.links.is_empty() %} <ul class="block{% if !block.class.is_empty() +%} {{+block.class}}{% endif %}"> |
