Skip to content

Commit 426ab8e

Browse files
authored
Rollup merge of rust-lang#59890 - GuillaumeGomez:empty-json-variables, r=QuietMisdreavus
Don't generate empty json variables r? @rust-lang/rustdoc
2 parents 021a8ec + 796e6e3 commit 426ab8e

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

Diff for: src/librustdoc/html/render.rs

+15-4
Original file line numberDiff line numberDiff line change
@@ -1064,11 +1064,22 @@ themePicker.onblur = handleThemeButtonsBlur;
10641064
.expect("invalid osstring conversion")))
10651065
.collect::<Vec<_>>();
10661066
files.sort_unstable_by(|a, b| a.cmp(b));
1067-
// FIXME(imperio): we could avoid to generate "dirs" and "files" if they're empty.
1068-
format!("{{\"name\":\"{name}\",\"dirs\":[{subs}],\"files\":[{files}]}}",
1067+
let subs = subs.iter().map(|s| s.to_json_string()).collect::<Vec<_>>().join(",");
1068+
let dirs = if subs.is_empty() {
1069+
String::new()
1070+
} else {
1071+
format!(",\"dirs\":[{}]", subs)
1072+
};
1073+
let files = files.join(",");
1074+
let files = if files.is_empty() {
1075+
String::new()
1076+
} else {
1077+
format!(",\"files\":[{}]", files)
1078+
};
1079+
format!("{{\"name\":\"{name}\"{dirs}{files}}}",
10691080
name=self.elem.to_str().expect("invalid osstring conversion"),
1070-
subs=subs.iter().map(|s| s.to_json_string()).collect::<Vec<_>>().join(","),
1071-
files=files.join(","))
1081+
dirs=dirs,
1082+
files=files)
10721083
}
10731084
}
10741085

Diff for: src/librustdoc/html/static/source-script.js

+19-15
Original file line numberDiff line numberDiff line change
@@ -39,28 +39,32 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
3939
children.className = "children";
4040
var folders = document.createElement("div");
4141
folders.className = "folders";
42-
for (var i = 0; i < elem.dirs.length; ++i) {
43-
if (createDirEntry(elem.dirs[i], folders, fullPath, currentFile,
44-
hasFoundFile) === true) {
45-
addClass(name, "expand");
46-
hasFoundFile = true;
42+
if (elem.dirs) {
43+
for (var i = 0; i < elem.dirs.length; ++i) {
44+
if (createDirEntry(elem.dirs[i], folders, fullPath, currentFile,
45+
hasFoundFile) === true) {
46+
addClass(name, "expand");
47+
hasFoundFile = true;
48+
}
4749
}
4850
}
4951
children.appendChild(folders);
5052

5153
var files = document.createElement("div");
5254
files.className = "files";
53-
for (i = 0; i < elem.files.length; ++i) {
54-
var file = document.createElement("a");
55-
file.innerText = elem.files[i];
56-
file.href = window.rootPath + "src/" + fullPath + elem.files[i] + ".html";
57-
if (hasFoundFile === false &&
58-
currentFile === fullPath + elem.files[i]) {
59-
file.className = "selected";
60-
addClass(name, "expand");
61-
hasFoundFile = true;
55+
if (elem.files) {
56+
for (i = 0; i < elem.files.length; ++i) {
57+
var file = document.createElement("a");
58+
file.innerText = elem.files[i];
59+
file.href = window.rootPath + "src/" + fullPath + elem.files[i] + ".html";
60+
if (hasFoundFile === false &&
61+
currentFile === fullPath + elem.files[i]) {
62+
file.className = "selected";
63+
addClass(name, "expand");
64+
hasFoundFile = true;
65+
}
66+
files.appendChild(file);
6267
}
63-
files.appendChild(file);
6468
}
6569
search.fullPath = fullPath;
6670
children.appendChild(files);

0 commit comments

Comments
 (0)