From 7a5cd2be84623011dd7d4d77e510a39d7c8bf657 Mon Sep 17 00:00:00 2001 From: Jacob Hoffman-Andrews Date: Tue, 23 Nov 2021 21:23:54 -0800 Subject: [PATCH] Consistentize the system for image URLs in CSS. --- src/librustdoc/html/render/write_shared.rs | 48 +++++++++------------- src/librustdoc/html/static/css/rustdoc.css | 11 +++++ src/librustdoc/html/templates/page.html | 5 --- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index cbb5755863613..0d5ba8e80d242 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -181,42 +181,34 @@ pub(super) fn write_shared( cx.write_shared(SharedResource::InvocationSpecific { basename: p }, content, &options.emit) }; - fn add_background_image_to_css( - cx: &Context<'_>, - css: &mut String, - rule: &str, - file: &'static str, - ) { - css.push_str(&format!( - "{} {{ background-image: url({}); }}", - rule, - SharedResource::ToolchainSpecific { basename: file } + // Given "foo.svg", return e.g. "url(\"foo1.58.0.svg\")" + fn ver_url(cx: &Context<'_>, basename: &'static str) -> String { + format!( + "url(\"{}\")", + SharedResource::ToolchainSpecific { basename } .path(cx) .file_name() .unwrap() .to_str() .unwrap() - )) + ) } - // Add all the static files. These may already exist, but we just - // overwrite them anyway to make sure that they're fresh and up-to-date. - let mut rustdoc_css = static_files::RUSTDOC_CSS.to_owned(); - add_background_image_to_css( - cx, - &mut rustdoc_css, - "details.undocumented[open] > summary::before, \ - details.rustdoc-toggle[open] > summary::before, \ - details.rustdoc-toggle[open] > summary.hideme::before", - "toggle-minus.svg", - ); - add_background_image_to_css( + // We use the AUTOREPLACE mechanism to inject into our static JS and CSS certain + // values that are only known at doc build time. Since this mechanism is somewhat + // surprising when reading the code, please limit it to rustdoc.css. + write_minify( + "rustdoc.css", + static_files::RUSTDOC_CSS + .replace( + "/* AUTOREPLACE: */url(\"toggle-minus.svg\")", + &ver_url(cx, "toggle-minus.svg"), + ) + .replace("/* AUTOREPLACE: */url(\"toggle-plus.svg\")", &ver_url(cx, "toggle-plus.svg")) + .replace("/* AUTOREPLACE: */url(\"down-arrow.svg\")", &ver_url(cx, "down-arrow.svg")), cx, - &mut rustdoc_css, - "details.undocumented > summary::before, details.rustdoc-toggle > summary::before", - "toggle-plus.svg", - ); - write_minify("rustdoc.css", rustdoc_css, cx, options)?; + options, + )?; // Add all the static files. These may already exist, but we just // overwrite them anyway to make sure that they're fresh and up-to-date. diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 89a763ef6d707..fbc26fb55d3b3 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -825,6 +825,7 @@ h2.small-section-header > .anchor { background-color: transparent; background-size: 20px; background-position: calc(100% - 1px) 56%; + background-image: /* AUTOREPLACE: */url("down-arrow.svg"); } .search-container > .top-button { position: absolute; @@ -1611,6 +1612,16 @@ details.rustdoc-toggle[open] > summary.hideme > span { display: none; } +details.undocumented[open] > summary::before, +details.rustdoc-toggle[open] > summary::before, +details.rustdoc-toggle[open] > summary.hideme::before { + background-image: /* AUTOREPLACE: */url("toggle-minus.svg"); +} + +details.undocumented > summary::before, details.rustdoc-toggle > summary::before { + background-image: /* AUTOREPLACE: */url("toggle-plus.svg"); +} + details.rustdoc-toggle[open] > summary::before, details.rustdoc-toggle[open] > summary.hideme::before { width: 17px; diff --git a/src/librustdoc/html/templates/page.html b/src/librustdoc/html/templates/page.html index e1a9a01588673..2c81dca3891c5 100644 --- a/src/librustdoc/html/templates/page.html +++ b/src/librustdoc/html/templates/page.html @@ -48,11 +48,6 @@ href="{{static_root_path | safe}}favicon{{page.resource_suffix}}.svg"> {#- -#} {%- endif -%} {{- layout.external_html.in_header | safe -}} - {#- -#} {#- -#} {#- -#}