diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 94d74bf793e7..28003084f570 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -450,7 +450,7 @@ function defocusSearchBar() {
set_fragment(cur_line_id);
}
}
- })();
+ }());
document.addEventListener("click", function(ev) {
if (hasClass(ev.target, "collapse-toggle")) {
@@ -476,27 +476,29 @@ function defocusSearchBar() {
}
});
- var x = document.getElementsByClassName("version-selector");
- if (x.length > 0) {
- x[0].onchange = function() {
- var i, match,
- url = document.location.href,
- stripped = "",
- len = rootPath.match(/\.\.\//g).length + 1;
+ (function() {
+ var x = document.getElementsByClassName("version-selector");
+ if (x.length > 0) {
+ x[0].onchange = function() {
+ var i, match,
+ url = document.location.href,
+ stripped = "",
+ len = rootPath.match(/\.\.\//g).length + 1;
- for (i = 0; i < len; ++i) {
- match = url.match(/\/[^\/]*$/);
- if (i < len - 1) {
- stripped = match[0] + stripped;
+ for (i = 0; i < len; ++i) {
+ match = url.match(/\/[^\/]*$/);
+ if (i < len - 1) {
+ stripped = match[0] + stripped;
+ }
+ url = url.substring(0, url.length - match[0].length);
}
- url = url.substring(0, url.length - match[0].length);
- }
- url += "/" + document.getElementsByClassName("version-selector")[0].value + stripped;
+ url += "/" + document.getElementsByClassName("version-selector")[0].value + stripped;
- document.location.href = url;
- };
- }
+ document.location.href = url;
+ };
+ }
+ }());
/**
* A function to compute the Levenshtein distance between two strings
@@ -2259,7 +2261,7 @@ function defocusSearchBar() {
}
}
- function collapser(e, collapse) {
+ function collapser(pageId, e, collapse) {
// inherent impl ids are like "impl" or impl-'.
// they will never be hidden by default.
var n = e.parentElement;
@@ -2279,7 +2281,7 @@ function defocusSearchBar() {
if (impl_list !== null) {
onEachLazy(impl_list.getElementsByClassName("collapse-toggle"), function(e) {
- collapser(e, collapse);
+ collapser(pageId, e, collapse);
});
}
@@ -2287,7 +2289,7 @@ function defocusSearchBar() {
if (blanket_list !== null) {
onEachLazy(blanket_list.getElementsByClassName("collapse-toggle"), function(e) {
- collapser(e, collapse);
+ collapser(pageId, e, collapse);
});
}
}
@@ -2311,103 +2313,7 @@ function defocusSearchBar() {
return toggle;
}
- var toggle = createSimpleToggle(false);
- var hideMethodDocs = getCurrentValue("rustdoc-auto-hide-method-docs") === "true";
- var pageId = getPageId();
-
- var func = function(e) {
- var next = e.nextElementSibling;
- if (!next) {
- return;
- }
- if (hasClass(next, "docblock") === true ||
- (hasClass(next, "stability") === true &&
- hasClass(next.nextElementSibling, "docblock") === true)) {
- var newToggle = toggle.cloneNode(true);
- insertAfter(newToggle, e.childNodes[e.childNodes.length - 1]);
- if (hideMethodDocs === true && hasClass(e, "method") === true) {
- collapseDocs(newToggle, "hide", pageId);
- }
- }
- };
-
- var funcImpl = function(e) {
- var next = e.nextElementSibling;
- if (next && hasClass(next, "docblock")) {
- next = next.nextElementSibling;
- }
- if (!next) {
- return;
- }
- if (next.getElementsByClassName("method").length > 0 && hasClass(e, "impl")) {
- insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]);
- }
- };
-
- onEachLazy(document.getElementsByClassName("method"), func);
- onEachLazy(document.getElementsByClassName("associatedconstant"), func);
- onEachLazy(document.getElementsByClassName("impl"), funcImpl);
- var impl_call = function() {};
- if (hideMethodDocs === true) {
- impl_call = function(e, newToggle, pageId) {
- if (e.id.match(/^impl(?:-\d+)?$/) === null) {
- // Automatically minimize all non-inherent impls
- if (hasClass(e, "impl") === true) {
- collapseDocs(newToggle, "hide", pageId);
- }
- }
- };
- }
- var newToggle = document.createElement("a");
- newToggle.href = "javascript:void(0)";
- newToggle.className = "collapse-toggle hidden-default collapsed";
- newToggle.innerHTML = "[" + labelForToggleButton(true) +
- "] Show hidden undocumented items";
- function toggleClicked() {
- if (hasClass(this, "collapsed")) {
- removeClass(this, "collapsed");
- onEachLazy(this.parentNode.getElementsByClassName("hidden"), function(x) {
- if (hasClass(x, "content") === false) {
- removeClass(x, "hidden");
- addClass(x, "x");
- }
- }, true);
- this.innerHTML = "[" + labelForToggleButton(false) +
- "] Hide undocumented items";
- } else {
- addClass(this, "collapsed");
- onEachLazy(this.parentNode.getElementsByClassName("x"), function(x) {
- if (hasClass(x, "content") === false) {
- addClass(x, "hidden");
- removeClass(x, "x");
- }
- }, true);
- this.innerHTML = "[" + labelForToggleButton(true) +
- "] Show hidden undocumented items";
- }
- }
- onEachLazy(document.getElementsByClassName("impl-items"), function(e) {
- onEachLazy(e.getElementsByClassName("associatedconstant"), func);
- var hiddenElems = e.getElementsByClassName("hidden");
- var needToggle = false;
-
- var hlength = hiddenElems.length;
- for (var i = 0; i < hlength; ++i) {
- if (hasClass(hiddenElems[i], "content") === false &&
- hasClass(hiddenElems[i], "docblock") === false) {
- needToggle = true;
- break;
- }
- }
- if (needToggle === true) {
- var inner_toggle = newToggle.cloneNode(true);
- inner_toggle.onclick = toggleClicked;
- e.insertBefore(inner_toggle, e.firstChild);
- impl_call(e.previousSibling, inner_toggle, pageId);
- }
- });
-
- function createToggle(otherMessage, fontSize, extraClass, show) {
+ function createToggle(toggle, otherMessage, fontSize, extraClass, show) {
var span = document.createElement("span");
span.className = "toggle-label";
if (show) {
@@ -2442,97 +2348,197 @@ function defocusSearchBar() {
return wrapper;
}
- var currentType = document.getElementsByClassName("type-decl")[0];
- var className = null;
- if (currentType) {
- currentType = currentType.getElementsByClassName("rust")[0];
- if (currentType) {
- currentType.classList.forEach(function(item) {
- if (item !== "main") {
- className = item;
- return true;
- }
- });
- }
- }
- var showItemDeclarations = getCurrentValue("rustdoc-auto-hide-" + className);
- if (showItemDeclarations === null) {
- if (className === "enum" || className === "macro") {
- showItemDeclarations = "false";
- } else if (className === "struct" || className === "union" || className === "trait") {
- showItemDeclarations = "true";
- } else {
- // In case we found an unknown type, we just use the "parent" value.
- showItemDeclarations = getCurrentValue("rustdoc-auto-hide-declarations");
- }
- }
- showItemDeclarations = showItemDeclarations === "false";
- function buildToggleWrapper(e) {
- if (hasClass(e, "autohide")) {
- var wrap = e.previousElementSibling;
- if (wrap && hasClass(wrap, "toggle-wrapper")) {
- var inner_toggle = wrap.childNodes[0];
- var extra = e.childNodes[0].tagName === "H3";
+ (function() {
+ var toggle = createSimpleToggle(false);
+ var hideMethodDocs = getCurrentValue("rustdoc-auto-hide-method-docs") === "true";
+ var pageId = getPageId();
- e.style.display = "none";
- addClass(wrap, "collapsed");
- onEachLazy(inner_toggle.getElementsByClassName("inner"), function(e) {
- e.innerHTML = labelForToggleButton(true);
- });
- onEachLazy(inner_toggle.getElementsByClassName("toggle-label"), function(e) {
- e.style.display = "inline-block";
- if (extra === true) {
- i_e.innerHTML = " Show " + e.childNodes[0].innerHTML;
+ var func = function(e) {
+ var next = e.nextElementSibling;
+ if (!next) {
+ return;
+ }
+ if (hasClass(next, "docblock") === true ||
+ (hasClass(next, "stability") === true &&
+ hasClass(next.nextElementSibling, "docblock") === true)) {
+ var newToggle = toggle.cloneNode(true);
+ insertAfter(newToggle, e.childNodes[e.childNodes.length - 1]);
+ if (hideMethodDocs === true && hasClass(e, "method") === true) {
+ collapseDocs(newToggle, "hide", pageId);
+ }
+ }
+ };
+
+ var funcImpl = function(e) {
+ var next = e.nextElementSibling;
+ if (next && hasClass(next, "docblock")) {
+ next = next.nextElementSibling;
+ }
+ if (!next) {
+ return;
+ }
+ if (next.getElementsByClassName("method").length > 0 && hasClass(e, "impl")) {
+ insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]);
+ }
+ };
+
+ onEachLazy(document.getElementsByClassName("method"), func);
+ onEachLazy(document.getElementsByClassName("associatedconstant"), func);
+ onEachLazy(document.getElementsByClassName("impl"), funcImpl);
+ var impl_call = function() {};
+ if (hideMethodDocs === true) {
+ impl_call = function(e, newToggle) {
+ if (e.id.match(/^impl(?:-\d+)?$/) === null) {
+ // Automatically minimize all non-inherent impls
+ if (hasClass(e, "impl") === true) {
+ collapseDocs(newToggle, "hide", pageId);
+ }
+ }
+ };
+ }
+ var newToggle = document.createElement("a");
+ newToggle.href = "javascript:void(0)";
+ newToggle.className = "collapse-toggle hidden-default collapsed";
+ newToggle.innerHTML = "[" + labelForToggleButton(true) +
+ "] Show hidden undocumented items";
+ function toggleClicked() {
+ if (hasClass(this, "collapsed")) {
+ removeClass(this, "collapsed");
+ onEachLazy(this.parentNode.getElementsByClassName("hidden"), function(x) {
+ if (hasClass(x, "content") === false) {
+ removeClass(x, "hidden");
+ addClass(x, "x");
+ }
+ }, true);
+ this.innerHTML = "[" + labelForToggleButton(false) +
+ "] Hide undocumented items";
+ } else {
+ addClass(this, "collapsed");
+ onEachLazy(this.parentNode.getElementsByClassName("x"), function(x) {
+ if (hasClass(x, "content") === false) {
+ addClass(x, "hidden");
+ removeClass(x, "x");
+ }
+ }, true);
+ this.innerHTML = "[" + labelForToggleButton(true) +
+ "] Show hidden undocumented items";
+ }
+ }
+ onEachLazy(document.getElementsByClassName("impl-items"), function(e) {
+ onEachLazy(e.getElementsByClassName("associatedconstant"), func);
+ var hiddenElems = e.getElementsByClassName("hidden");
+ var needToggle = false;
+
+ var hlength = hiddenElems.length;
+ for (var i = 0; i < hlength; ++i) {
+ if (hasClass(hiddenElems[i], "content") === false &&
+ hasClass(hiddenElems[i], "docblock") === false) {
+ needToggle = true;
+ break;
+ }
+ }
+ if (needToggle === true) {
+ var inner_toggle = newToggle.cloneNode(true);
+ inner_toggle.onclick = toggleClicked;
+ e.insertBefore(inner_toggle, e.firstChild);
+ impl_call(e.previousSibling, inner_toggle);
+ }
+ });
+
+ var currentType = document.getElementsByClassName("type-decl")[0];
+ var className = null;
+ if (currentType) {
+ currentType = currentType.getElementsByClassName("rust")[0];
+ if (currentType) {
+ currentType.classList.forEach(function(item) {
+ if (item !== "main") {
+ className = item;
+ return true;
}
});
}
}
- if (e.parentNode.id === "main") {
- var otherMessage = "";
- var fontSize;
- var extraClass;
-
- if (hasClass(e, "type-decl")) {
- fontSize = "20px";
- otherMessage = " Show declaration";
- if (showItemDeclarations === false) {
- extraClass = "collapsed";
- }
- } else if (hasClass(e, "sub-variant")) {
- otherMessage = " Show fields";
- } else if (hasClass(e, "non-exhaustive")) {
- otherMessage = " This ";
- if (hasClass(e, "non-exhaustive-struct")) {
- otherMessage += "struct";
- } else if (hasClass(e, "non-exhaustive-enum")) {
- otherMessage += "enum";
- } else if (hasClass(e, "non-exhaustive-variant")) {
- otherMessage += "enum variant";
- } else if (hasClass(e, "non-exhaustive-type")) {
- otherMessage += "type";
- }
- otherMessage += " is marked as non-exhaustive";
- } else if (hasClass(e.childNodes[0], "impl-items")) {
- extraClass = "marg-left";
- }
-
- e.parentNode.insertBefore(
- createToggle(otherMessage,
- fontSize,
- extraClass,
- hasClass(e, "type-decl") === false || showItemDeclarations === true),
- e);
- if (hasClass(e, "type-decl") === true && showItemDeclarations === true) {
- collapseDocs(e.previousSibling.childNodes[0], "toggle");
- }
- if (hasClass(e, "non-exhaustive") === true) {
- collapseDocs(e.previousSibling.childNodes[0], "toggle");
+ var showItemDeclarations = getCurrentValue("rustdoc-auto-hide-" + className);
+ if (showItemDeclarations === null) {
+ if (className === "enum" || className === "macro") {
+ showItemDeclarations = "false";
+ } else if (className === "struct" || className === "union" || className === "trait") {
+ showItemDeclarations = "true";
+ } else {
+ // In case we found an unknown type, we just use the "parent" value.
+ showItemDeclarations = getCurrentValue("rustdoc-auto-hide-declarations");
}
}
- }
+ showItemDeclarations = showItemDeclarations === "false";
+ function buildToggleWrapper(e) {
+ if (hasClass(e, "autohide")) {
+ var wrap = e.previousElementSibling;
+ if (wrap && hasClass(wrap, "toggle-wrapper")) {
+ var inner_toggle = wrap.childNodes[0];
+ var extra = e.childNodes[0].tagName === "H3";
- onEachLazy(document.getElementsByClassName("docblock"), buildToggleWrapper);
- onEachLazy(document.getElementsByClassName("sub-variant"), buildToggleWrapper);
+ e.style.display = "none";
+ addClass(wrap, "collapsed");
+ onEachLazy(inner_toggle.getElementsByClassName("inner"), function(e) {
+ e.innerHTML = labelForToggleButton(true);
+ });
+ onEachLazy(inner_toggle.getElementsByClassName("toggle-label"), function(e) {
+ e.style.display = "inline-block";
+ if (extra === true) {
+ i_e.innerHTML = " Show " + e.childNodes[0].innerHTML;
+ }
+ });
+ }
+ }
+ if (e.parentNode.id === "main") {
+ var otherMessage = "";
+ var fontSize;
+ var extraClass;
+
+ if (hasClass(e, "type-decl")) {
+ fontSize = "20px";
+ otherMessage = " Show declaration";
+ if (showItemDeclarations === false) {
+ extraClass = "collapsed";
+ }
+ } else if (hasClass(e, "sub-variant")) {
+ otherMessage = " Show fields";
+ } else if (hasClass(e, "non-exhaustive")) {
+ otherMessage = " This ";
+ if (hasClass(e, "non-exhaustive-struct")) {
+ otherMessage += "struct";
+ } else if (hasClass(e, "non-exhaustive-enum")) {
+ otherMessage += "enum";
+ } else if (hasClass(e, "non-exhaustive-variant")) {
+ otherMessage += "enum variant";
+ } else if (hasClass(e, "non-exhaustive-type")) {
+ otherMessage += "type";
+ }
+ otherMessage += " is marked as non-exhaustive";
+ } else if (hasClass(e.childNodes[0], "impl-items")) {
+ extraClass = "marg-left";
+ }
+
+ e.parentNode.insertBefore(
+ createToggle(
+ toggle,
+ otherMessage,
+ fontSize,
+ extraClass,
+ hasClass(e, "type-decl") === false || showItemDeclarations === true),
+ e);
+ if (hasClass(e, "type-decl") === true && showItemDeclarations === true) {
+ collapseDocs(e.previousSibling.childNodes[0], "toggle");
+ }
+ if (hasClass(e, "non-exhaustive") === true) {
+ collapseDocs(e.previousSibling.childNodes[0], "toggle");
+ }
+ }
+ }
+
+ onEachLazy(document.getElementsByClassName("docblock"), buildToggleWrapper);
+ onEachLazy(document.getElementsByClassName("sub-variant"), buildToggleWrapper);
+ }());
function createToggleWrapper(tog) {
var span = document.createElement("span");
@@ -2547,56 +2553,60 @@ function defocusSearchBar() {
return wrapper;
}
- // To avoid checking on "rustdoc-item-attributes" value on every loop...
- var itemAttributesFunc = function() {};
- if (getCurrentValue("rustdoc-auto-hide-attributes") !== "false") {
- itemAttributesFunc = function(x) {
- collapseDocs(x.previousSibling.childNodes[0], "toggle");
- };
- }
- var attributesToggle = createToggleWrapper(createSimpleToggle(false));
- onEachLazy(main.getElementsByClassName("attributes"), function(i_e) {
- var attr_tog = attributesToggle.cloneNode(true);
- if (hasClass(i_e, "top-attr") === true) {
- addClass(attr_tog, "top-attr");
+ (function() {
+ // To avoid checking on "rustdoc-item-attributes" value on every loop...
+ var itemAttributesFunc = function() {};
+ if (getCurrentValue("rustdoc-auto-hide-attributes") !== "false") {
+ itemAttributesFunc = function(x) {
+ collapseDocs(x.previousSibling.childNodes[0], "toggle");
+ };
}
- i_e.parentNode.insertBefore(attr_tog, i_e);
- itemAttributesFunc(i_e);
- });
-
- // To avoid checking on "rustdoc-line-numbers" value on every loop...
- var lineNumbersFunc = function() {};
- if (getCurrentValue("rustdoc-line-numbers") === "true") {
- lineNumbersFunc = function(x) {
- var count = x.textContent.split("\n").length;
- var elems = [];
- for (var i = 0; i < count; ++i) {
- elems.push(i + 1);
+ var attributesToggle = createToggleWrapper(createSimpleToggle(false));
+ onEachLazy(main.getElementsByClassName("attributes"), function(i_e) {
+ var attr_tog = attributesToggle.cloneNode(true);
+ if (hasClass(i_e, "top-attr") === true) {
+ addClass(attr_tog, "top-attr");
}
- var node = document.createElement("pre");
- addClass(node, "line-number");
- node.innerHTML = elems.join("\n");
- x.parentNode.insertBefore(node, x);
- };
- }
- onEachLazy(document.getElementsByClassName("rust-example-rendered"), function(e) {
- if (hasClass(e, "compile_fail")) {
- e.addEventListener("mouseover", function(event) {
- this.parentElement.previousElementSibling.childNodes[0].style.color = "#f00";
- });
- e.addEventListener("mouseout", function(event) {
- this.parentElement.previousElementSibling.childNodes[0].style.color = "";
- });
- } else if (hasClass(e, "ignore")) {
- e.addEventListener("mouseover", function(event) {
- this.parentElement.previousElementSibling.childNodes[0].style.color = "#ff9200";
- });
- e.addEventListener("mouseout", function(event) {
- this.parentElement.previousElementSibling.childNodes[0].style.color = "";
- });
+ i_e.parentNode.insertBefore(attr_tog, i_e);
+ itemAttributesFunc(i_e);
+ });
+ }());
+
+ (function() {
+ // To avoid checking on "rustdoc-line-numbers" value on every loop...
+ var lineNumbersFunc = function() {};
+ if (getCurrentValue("rustdoc-line-numbers") === "true") {
+ lineNumbersFunc = function(x) {
+ var count = x.textContent.split("\n").length;
+ var elems = [];
+ for (var i = 0; i < count; ++i) {
+ elems.push(i + 1);
+ }
+ var node = document.createElement("pre");
+ addClass(node, "line-number");
+ node.innerHTML = elems.join("\n");
+ x.parentNode.insertBefore(node, x);
+ };
}
- lineNumbersFunc(e);
- });
+ onEachLazy(document.getElementsByClassName("rust-example-rendered"), function(e) {
+ if (hasClass(e, "compile_fail")) {
+ e.addEventListener("mouseover", function(event) {
+ this.parentElement.previousElementSibling.childNodes[0].style.color = "#f00";
+ });
+ e.addEventListener("mouseout", function(event) {
+ this.parentElement.previousElementSibling.childNodes[0].style.color = "";
+ });
+ } else if (hasClass(e, "ignore")) {
+ e.addEventListener("mouseover", function(event) {
+ this.parentElement.previousElementSibling.childNodes[0].style.color = "#ff9200";
+ });
+ e.addEventListener("mouseout", function(event) {
+ this.parentElement.previousElementSibling.childNodes[0].style.color = "";
+ });
+ }
+ lineNumbersFunc(e);
+ });
+ }());
// In the search display, allows to switch between tabs.
function printTab(nb) {