From 1d1ab21ad937608d89f0c9f29394be4995823f9c Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 18 Jan 2021 12:03:53 +0100 Subject: [PATCH] Remove inline script tags --- src/librustdoc/html/layout.rs | 5 +--- src/librustdoc/html/markdown.rs | 2 ++ src/librustdoc/html/render/mod.rs | 7 ++---- src/librustdoc/html/static/main.js | 39 +++++++++++++++++++++--------- src/tools/rustdoc-js/tester.js | 3 +-- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs index b5169b0599773..4458eea95f3e1 100644 --- a/src/librustdoc/html/layout.rs +++ b/src/librustdoc/html/layout.rs @@ -111,10 +111,7 @@ crate fn render(
\
\ {after_content}\ - \ +
\ {static_extra_scripts}\ {extra_scripts}\ diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 33639055b59ef..cfa6cd96595d6 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -1313,6 +1313,8 @@ fn init_id_map() -> FxHashMap { map.insert("toggle-all-docs".to_owned(), 1); map.insert("all-types".to_owned(), 1); map.insert("default-settings".to_owned(), 1); + map.insert("rustdoc-vars".to_owned(), 1); + map.insert("sidebar-vars".to_owned(), 1); // This is the list of IDs used by rustdoc sections. map.insert("fields".to_owned(), 1); map.insert("variants".to_owned(), 1); diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 2db89e8a7ca68..03e091297e5b6 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -4216,11 +4216,8 @@ fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer, cache: let relpath = if it.is_mod() { "../" } else { "" }; write!( buffer, - "", + "
\ +
", name = it.name.unwrap_or(kw::Empty), ty = it.type_(), path = relpath diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 3ffb72ba3ee8b..78a825fcca0ba 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -1,5 +1,5 @@ // From rust: -/* global ALIASES, currentCrate, rootPath */ +/* global ALIASES */ // Local js definitions: /* global addClass, getCurrentValue, hasClass */ @@ -40,6 +40,21 @@ if (!DOMTokenList.prototype.remove) { }; } +(function () { + var rustdocVars = document.getElementById("rustdoc-vars"); + if (rustdocVars) { + window.rootPath = rustdocVars.attributes["data-root-path"].value; + window.currentCrate = rustdocVars.attributes["data-current-crate"].value; + } + var sidebarVars = document.getElementById("sidebar-vars"); + if (sidebarVars) { + window.sidebarCurrent = { + name: sidebarVars.attributes["data-name"].value, + ty: sidebarVars.attributes["data-ty"].value, + relpath: sidebarVars.attributes["data-relpath"].value, + }; + } +}()); // Gets the human-readable string for the virtual-key code of the // given KeyboardEvent, ev. @@ -565,7 +580,7 @@ function defocusSearchBar() { var i, match, url = document.location.href, stripped = "", - len = rootPath.match(/\.\.\//g).length + 1; + len = window.rootPath.match(/\.\.\//g).length + 1; for (i = 0; i < len; ++i) { match = url.match(/\/[^\/]*$/); @@ -1504,15 +1519,15 @@ function defocusSearchBar() { if (type === "mod") { displayPath = path + "::"; - href = rootPath + path.replace(/::/g, "/") + "/" + + href = window.rootPath + path.replace(/::/g, "/") + "/" + name + "/index.html"; } else if (type === "primitive" || type === "keyword") { displayPath = ""; - href = rootPath + path.replace(/::/g, "/") + + href = window.rootPath + path.replace(/::/g, "/") + "/" + type + "." + name + ".html"; } else if (type === "externcrate") { displayPath = ""; - href = rootPath + name + "/index.html"; + href = window.rootPath + name + "/index.html"; } else if (item.parent !== undefined) { var myparent = item.parent; var anchor = "#" + type + "." + name; @@ -1535,13 +1550,13 @@ function defocusSearchBar() { } else { displayPath = path + "::" + myparent.name + "::"; } - href = rootPath + path.replace(/::/g, "/") + + href = window.rootPath + path.replace(/::/g, "/") + "/" + pageType + "." + pageName + ".html" + anchor; } else { displayPath = item.path + "::"; - href = rootPath + item.path.replace(/::/g, "/") + + href = window.rootPath + item.path.replace(/::/g, "/") + "/" + type + "." + name + ".html"; } return [displayPath, href]; @@ -1973,7 +1988,7 @@ function defocusSearchBar() { startSearch(); // Draw a convenient sidebar of known crates if we have a listing - if (rootPath === "../" || rootPath === "./") { + if (window.rootPath === "../" || window.rootPath === "./") { var sidebar = document.getElementsByClassName("sidebar-elems")[0]; if (sidebar) { var div = document.createElement("div"); @@ -1992,11 +2007,11 @@ function defocusSearchBar() { crates.sort(); for (var i = 0; i < crates.length; ++i) { var klass = "crate"; - if (rootPath !== "./" && crates[i] === window.currentCrate) { + if (window.rootPath !== "./" && crates[i] === window.currentCrate) { klass += " current"; } var link = document.createElement("a"); - link.href = rootPath + crates[i] + "/index.html"; + link.href = window.rootPath + crates[i] + "/index.html"; // The summary in the search index has HTML, so we need to // dynamically render it as plaintext. link.title = convertHTMLToPlaintext(rawSearchIndex[crates[i]].doc); @@ -2118,7 +2133,7 @@ function defocusSearchBar() { var libs = Object.getOwnPropertyNames(imp); for (var i = 0, llength = libs.length; i < llength; ++i) { - if (libs[i] === currentCrate) { continue; } + if (libs[i] === window.currentCrate) { continue; } var structs = imp[libs[i]]; struct_loop: @@ -2143,7 +2158,7 @@ function defocusSearchBar() { var href = elem.getAttribute("href"); if (href && href.indexOf("http") !== 0) { - elem.setAttribute("href", rootPath + href); + elem.setAttribute("href", window.rootPath + href); } }); diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js index 63f2d2f5d2f68..3f6bd60397526 100644 --- a/src/tools/rustdoc-js/tester.js +++ b/src/tools/rustdoc-js/tester.js @@ -263,8 +263,7 @@ function loadMainJsAndIndex(mainJs, searchIndex, storageJs, crate) { "handleAliases", "getQuery", "buildIndex", "execQuery", "execSearch"]; ALIASES = {}; - finalJS += 'window = { "currentCrate": "' + crate + '" };\n'; - finalJS += 'var rootPath = "../";\n'; + finalJS += 'window = { "currentCrate": "' + crate + '", rootPath: "../" };\n'; finalJS += loadThings(["hasOwnProperty", "onEach"], 'function', extractFunction, storageJs); finalJS += loadThings(arraysToLoad, 'array', extractArrayVariable, mainJs); finalJS += loadThings(variablesToLoad, 'variable', extractVariable, mainJs);