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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user