about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2023-09-18 17:48:18 -0700
committerMichael Howell <michael@notriddle.com>2023-10-08 20:17:53 -0700
commit6d6fa792fffa6e22eec1b30cedee6e8306d0df64 (patch)
tree293ffd439cbf85994b1c8f8d912c008e66c8a59b
parent957c5db6be09f8def3f7a8297577a6d42e02f7c0 (diff)
downloadrust-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.rs1
-rw-r--r--src/librustdoc/html/render/context.rs6
-rw-r--r--src/librustdoc/html/static/css/rustdoc.css1
-rw-r--r--src/librustdoc/html/static/js/main.js7
-rw-r--r--src/librustdoc/html/templates/page.html7
-rw-r--r--tests/rustdoc/crate-version-extra.rs7
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)'