Rollup merge of #60134 - GuillaumeGomez:fix-index-page, r=Manishearth
Fix index-page generation Fixes #60096. The minifier was minifying crates name in `searchIndex` key position, which was a bit problematic for multiple reasons. r? @rust-lang/rustdoc
This commit is contained in:
commit
878a7d6ea5
4 changed files with 18 additions and 30 deletions
|
@ -1523,7 +1523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "minifier"
|
||||
version = "0.0.29"
|
||||
version = "0.0.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"macro-utils 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3038,7 +3038,7 @@ dependencies = [
|
|||
name = "rustdoc"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"minifier 0.0.29 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"minifier 0.0.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pulldown-cmark 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -4170,7 +4170,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39"
|
||||
"checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff"
|
||||
"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
|
||||
"checksum minifier 0.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1f4950cb2617b1933e2da0446e864dfe0d6a22c22ff72297996c46e6a63b210b"
|
||||
"checksum minifier 0.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "4c909e78edf61f3aa0dd2086da168cdf304329044bbf248768ca3d20253ec8c0"
|
||||
"checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649"
|
||||
"checksum miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ad30a47319c16cde58d0314f5d98202a80c9083b5f61178457403dfb14e509c"
|
||||
"checksum miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "28edaef377517fd9fe3e085c37d892ce7acd1fbeab9239c5a36eec352d8a8b7e"
|
||||
|
|
|
@ -10,6 +10,6 @@ path = "lib.rs"
|
|||
|
||||
[dependencies]
|
||||
pulldown-cmark = { version = "0.4.1", default-features = false }
|
||||
minifier = "0.0.29"
|
||||
minifier = "0.0.30"
|
||||
tempfile = "3"
|
||||
parking_lot = "0.7"
|
||||
|
|
|
@ -951,40 +951,15 @@ themePicker.onblur = handleThemeButtonsBlur;
|
|||
key: &str,
|
||||
for_search_index: bool,
|
||||
) -> io::Result<(Vec<String>, Vec<String>, Vec<String>)> {
|
||||
use minifier::js;
|
||||
|
||||
let mut ret = Vec::new();
|
||||
let mut krates = Vec::new();
|
||||
let mut variables = Vec::new();
|
||||
|
||||
let mut krate = krate.to_owned();
|
||||
|
||||
if path.exists() {
|
||||
for line in BufReader::new(File::open(path)?).lines() {
|
||||
let line = line?;
|
||||
if for_search_index && line.starts_with("var R") {
|
||||
variables.push(line.clone());
|
||||
// We need to check if the crate name has been put into a variable as well.
|
||||
let tokens: js::Tokens<'_> = js::simple_minify(&line)
|
||||
.into_iter()
|
||||
.filter(js::clean_token)
|
||||
.collect::<Vec<_>>()
|
||||
.into();
|
||||
let mut pos = 0;
|
||||
while pos < tokens.len() {
|
||||
if let Some((var_pos, Some(value_pos))) =
|
||||
js::get_variable_name_and_value_positions(&tokens, pos) {
|
||||
if let Some(s) = tokens.0[value_pos].get_string() {
|
||||
if &s[1..s.len() - 1] == krate {
|
||||
if let Some(var) = tokens[var_pos].get_other() {
|
||||
krate = var.to_owned();
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pos += 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if !line.starts_with(key) {
|
||||
|
@ -1340,10 +1315,20 @@ fn write_minify_replacer<W: Write>(
|
|||
.into();
|
||||
tokens.apply(|f| {
|
||||
// We add a backline after the newly created variables.
|
||||
minifier::js::aggregate_strings_into_array_with_separation(
|
||||
minifier::js::aggregate_strings_into_array_with_separation_filter(
|
||||
f,
|
||||
"R",
|
||||
Token::Char(ReservedChar::Backline),
|
||||
// This closure prevents crates' names from being aggregated.
|
||||
//
|
||||
// The point here is to check if the string is preceded by '[' and
|
||||
// "searchIndex". If so, it means this is a crate name and that it
|
||||
// shouldn't be aggregated.
|
||||
|tokens, pos| {
|
||||
pos < 2 ||
|
||||
!tokens[pos - 1].is_char(ReservedChar::OpenBracket) ||
|
||||
tokens[pos - 2].get_other() != Some("searchIndex")
|
||||
}
|
||||
)
|
||||
})
|
||||
.to_string()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// aux-build:all-item-types.rs
|
||||
// build-aux-docs
|
||||
// compile-flags: -Z unstable-options --enable-index-page
|
||||
|
||||
#![crate_name = "foo"]
|
||||
|
@ -5,4 +7,5 @@
|
|||
// @has foo/../index.html
|
||||
// @has - '//span[@class="in-band"]' 'List of all crates'
|
||||
// @has - '//ul[@class="mod"]//a[@href="foo/index.html"]' 'foo'
|
||||
// @has - '//ul[@class="mod"]//a[@href="all_item_types/index.html"]' 'all_item_types'
|
||||
pub struct Foo;
|
||||
|
|
Loading…
Add table
Reference in a new issue