1
Fork 0

Don't generate empty json variables

This commit is contained in:
Guillaume Gomez 2019-04-11 22:48:53 +02:00
parent 2002b4b39a
commit 796e6e37d6
2 changed files with 34 additions and 19 deletions

View file

@ -1060,11 +1060,22 @@ themePicker.onblur = handleThemeButtonsBlur;
.expect("invalid osstring conversion"))) .expect("invalid osstring conversion")))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
files.sort_unstable_by(|a, b| a.cmp(b)); files.sort_unstable_by(|a, b| a.cmp(b));
// FIXME(imperio): we could avoid to generate "dirs" and "files" if they're empty. let subs = subs.iter().map(|s| s.to_json_string()).collect::<Vec<_>>().join(",");
format!("{{\"name\":\"{name}\",\"dirs\":[{subs}],\"files\":[{files}]}}", let dirs = if subs.is_empty() {
String::new()
} else {
format!(",\"dirs\":[{}]", subs)
};
let files = files.join(",");
let files = if files.is_empty() {
String::new()
} else {
format!(",\"files\":[{}]", files)
};
format!("{{\"name\":\"{name}\"{dirs}{files}}}",
name=self.elem.to_str().expect("invalid osstring conversion"), name=self.elem.to_str().expect("invalid osstring conversion"),
subs=subs.iter().map(|s| s.to_json_string()).collect::<Vec<_>>().join(","), dirs=dirs,
files=files.join(",")) files=files)
} }
} }

View file

@ -39,6 +39,7 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
children.className = "children"; children.className = "children";
var folders = document.createElement("div"); var folders = document.createElement("div");
folders.className = "folders"; folders.className = "folders";
if (elem.dirs) {
for (var i = 0; i < elem.dirs.length; ++i) { for (var i = 0; i < elem.dirs.length; ++i) {
if (createDirEntry(elem.dirs[i], folders, fullPath, currentFile, if (createDirEntry(elem.dirs[i], folders, fullPath, currentFile,
hasFoundFile) === true) { hasFoundFile) === true) {
@ -46,10 +47,12 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
hasFoundFile = true; hasFoundFile = true;
} }
} }
}
children.appendChild(folders); children.appendChild(folders);
var files = document.createElement("div"); var files = document.createElement("div");
files.className = "files"; files.className = "files";
if (elem.files) {
for (i = 0; i < elem.files.length; ++i) { for (i = 0; i < elem.files.length; ++i) {
var file = document.createElement("a"); var file = document.createElement("a");
file.innerText = elem.files[i]; file.innerText = elem.files[i];
@ -62,6 +65,7 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
} }
files.appendChild(file); files.appendChild(file);
} }
}
search.fullPath = fullPath; search.fullPath = fullPath;
children.appendChild(files); children.appendChild(files);
parent.appendChild(name); parent.appendChild(name);