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:
Mazdak Farrokhzad
2019-04-26 03:50:14 +02:00
committed by GitHub
4 changed files with 18 additions and 30 deletions

View File

@@ -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()