diff options
| author | Michael Howell <michael@notriddle.com> | 2023-09-18 17:48:18 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2023-10-08 20:17:53 -0700 |
| commit | 6d6fa792fffa6e22eec1b30cedee6e8306d0df64 (patch) | |
| tree | 293ffd439cbf85994b1c8f8d912c008e66c8a59b | |
| parent | 957c5db6be09f8def3f7a8297577a6d42e02f7c0 (diff) | |
| download | rust-6d6fa792fffa6e22eec1b30cedee6e8306d0df64.tar.gz rust-6d6fa792fffa6e22eec1b30cedee6e8306d0df64.zip | |
rustdoc: clean up the layout for annotated version numbers
This should result in a layout for the actual standard library,
when built on CI, that looks like this:
_____
/ \ std
| R | 1.74.0-nightly
\_____/
(203c57dbe 2023-09-17)
Having the whole version as one string caused it to flex wrap,
because the sidebar isn't wide enough to fit the whole thing.
| -rw-r--r-- | src/librustdoc/html/layout.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/html/render/context.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/html/static/css/rustdoc.css | 1 | ||||
| -rw-r--r-- | src/librustdoc/html/static/js/main.js | 7 | ||||
| -rw-r--r-- | src/librustdoc/html/templates/page.html | 7 | ||||
| -rw-r--r-- | tests/rustdoc/crate-version-extra.rs | 7 |
6 files changed, 23 insertions, 6 deletions
diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs index 25ca67db649..d6e2330f91b 100644 --- a/src/librustdoc/html/layout.rs +++ b/src/librustdoc/html/layout.rs @@ -18,6 +18,7 @@ pub(crate) struct Layout { pub(crate) default_settings: FxHashMap<String, String>, pub(crate) krate: String, pub(crate) krate_version: String, + pub(crate) krate_version_extra: String, /// The given user css file which allow to customize the generated /// documentation theme. pub(crate) css_file_extension: Option<PathBuf>, diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 62c7dbe78ec..160233d99ac 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -528,13 +528,17 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { if let Some(url) = playground_url { playground = Some(markdown::Playground { crate_name: Some(krate.name(tcx)), url }); } + let krate_version = cache.crate_version.as_deref().unwrap_or_default(); + let (krate_version, krate_version_extra) = + krate_version.split_once(" ").unwrap_or((krate_version, "")); let mut layout = layout::Layout { logo: String::new(), favicon: String::new(), external_html, default_settings, krate: krate.name(tcx).to_string(), - krate_version: cache.crate_version.as_deref().unwrap_or_default().to_string(), + krate_version: krate_version.to_string(), + krate_version_extra: krate_version_extra.to_string(), css_file_extension: extension_css, scrape_examples_extension: !call_locations.is_empty(), }; diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 6a6747affb2..5e1bccb9b5b 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -492,6 +492,7 @@ ul.block, .block li { } .sidebar-elems, +.sidebar > .version, .sidebar > h2 { padding-left: 24px; } diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 5e852af2196..25e9da57a05 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -51,12 +51,13 @@ function setMobileTopbar() { // but with the current code it's hard to get the right information in the right place. const mobileTopbar = document.querySelector(".mobile-topbar"); const locationTitle = document.querySelector(".sidebar h2.location"); - if (mobileLocationTitle) { + if (mobileTopbar) { const mobileTitle = document.createElement("h2"); + mobileTitle.className = "location"; if (hasClass(document.body, "crate")) { - mobileLocationTitle.innerText = `Crate ${window.currentCrate}`; + mobileTitle.innerText = `Crate ${window.currentCrate}`; } else if (locationTitle) { - mobileLocationTitle.innerHTML = locationTitle.innerHTML; + mobileTitle.innerHTML = locationTitle.innerHTML; } mobileTopbar.appendChild(mobileTitle); } diff --git a/src/librustdoc/html/templates/page.html b/src/librustdoc/html/templates/page.html index 0987010b940..4a7c06e63c9 100644 --- a/src/librustdoc/html/templates/page.html +++ b/src/librustdoc/html/templates/page.html @@ -101,8 +101,11 @@ {% if !layout.krate_version.is_empty() %} <span class="version">{{+ layout.krate_version}}</span> {% endif %} - </h2> - </div> + </h2> {# #} + </div> {# #} + {% if !layout.krate_version_extra.is_empty() %} + <div class="version">{{+ layout.krate_version_extra}}</div> {# #} + {% endif %} {% endif %} {{ sidebar|safe }} </nav> {# #} diff --git a/tests/rustdoc/crate-version-extra.rs b/tests/rustdoc/crate-version-extra.rs new file mode 100644 index 00000000000..72a2c4ba5f7 --- /dev/null +++ b/tests/rustdoc/crate-version-extra.rs @@ -0,0 +1,7 @@ +// compile-flags: '--crate-version=1.3.37-nightly (203c57dbe 2023-09-17)' + +#![crate_name="foo"] + +// main version next to logo, extra version data below it +// @has 'foo/index.html' '//h2/span[@class="version"]' '1.3.37-nightly' +// @has 'foo/index.html' '//nav[@class="sidebar"]/div[@class="version"]' '(203c57dbe 2023-09-17)' |
