Skip to content

Commit

Permalink
rustdoc: clean up the layout for annotated version numbers
Browse files Browse the repository at this point in the history
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
   \_____/

   (203c57d 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.
  • Loading branch information
notriddle committed Sep 19, 2023
1 parent b91c786 commit 942f98f
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/librustdoc/html/layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
Expand Down
6 changes: 5 additions & 1 deletion src/librustdoc/html/render/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
};
Expand Down
1 change: 1 addition & 0 deletions src/librustdoc/html/static/css/rustdoc.css
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@ ul.block, .block li {
}

.sidebar-elems,
.sidebar > .version,
.sidebar > h2 {
padding-left: 24px;
}
Expand Down
7 changes: 5 additions & 2 deletions src/librustdoc/html/templates/page.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,11 @@ <h2> {# #}
{% 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> {# #}
Expand Down
10 changes: 9 additions & 1 deletion src/tools/compiletest/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,15 @@ impl TestProps {
);

if let Some(flags) = config.parse_name_value_directive(ln, COMPILE_FLAGS) {
self.compile_flags.extend(flags.split_whitespace().map(|s| s.to_owned()));
self.compile_flags.extend(
flags
.split("\"")
.enumerate()
.flat_map(|(i, f)| {
if i % 2 == 1 { vec![f] } else { f.split_whitespace().collect() }
})
.map(|s| s.to_owned()),
);
}
if config.parse_name_value_directive(ln, INCORRECT_COMPILER_FLAGS).is_some() {
panic!("`compiler-flags` directive should be spelled `compile-flags`");
Expand Down
7 changes: 7 additions & 0 deletions tests/rustdoc/crate-version-extra.rs
Original file line number Diff line number Diff line change
@@ -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)'

0 comments on commit 942f98f

Please sign in to comment.