This repository was archived by the owner on Jul 6, 2022. It is now read-only.
forked from Jaredk3nt/HomeTerm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwriters.js
More file actions
94 lines (90 loc) · 2.93 KB
/
Copy pathwriters.js
File metadata and controls
94 lines (90 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
function listWriter(output) {
if (Array.isArray(output)) {
const terminal = document.getElementById("terminal-content");
const outputNode = document.createElement("div");
outputNode.classList.add("terminal-output");
let inner = "<ul class='ls-list'>";
inner =
inner +
output
.map((item) => `<li class='ls-item ${item.type}'>${item.key}</li>`)
.join("");
inner = inner + "</ul>";
outputNode.innerHTML = inner;
terminal.appendChild(outputNode);
} else {
textWriter(output);
}
}
function textWriter(output = "") {
const terminal = document.getElementById("terminal-content");
const outputNode = document.createElement("div");
outputNode.classList.add("terminal-output");
const textNode = document.createElement("p");
textNode.innerText = output;
outputNode.appendChild(textNode);
terminal.appendChild(outputNode);
}
function ulWriter(output = "") {
// TODO: simplify these cases together
if (Array.isArray(output)) {
// Simple ul
const terminal = document.getElementById("terminal-content");
const outputNode = document.createElement("div");
outputNode.classList.add("terminal-output");
let inner = "<ul class='default-list'>";
inner =
inner +
output
.map((item) => `<li class='default-list-item'>${item}</li>`)
.join("");
inner = inner + "</ul>";
outputNode.innerHTML = inner;
terminal.appendChild(outputNode);
} else if (output.title && output.items) {
// Ul with title
const terminal = document.getElementById("terminal-content");
const outputNode = document.createElement("div");
outputNode.classList.add("terminal-output");
let inner = `<p class='default-list-title'>${output.title}</p><ul class='default-list'>`;
inner =
inner +
output.items
.map((item) => `<li class='default-list-item'>${item}</li>`)
.join("");
inner = inner + "</ul>";
outputNode.innerHTML = inner;
terminal.appendChild(outputNode);
} else {
textWriter(output);
}
}
function treeWriter(output = "") {
if (Array.isArray(output)) {
listWriter(output);
} else if (typeof output === "object") {
const terminal = document.getElementById("terminal-content");
const outputNode = document.createElement("div");
outputNode.classList.add("terminal-output");
let inner = "<ul class='tree-list'>";
inner = inner + buildNestedList(output, []).join("") + "</ul>";
outputNode.innerHTML = inner;
terminal.appendChild(outputNode);
} else {
textWriter(output);
}
}
function buildNestedList(cursor, list) {
Object.entries(cursor).map(([key, value]) => {
if (locationType(value) === types.DIR) {
list.push(
`<li class="tree-list-item directory">${key}<ul class="tree-list">`
);
buildNestedList(value, list);
list.push("</ul></li>");
} else {
list.push(`<li class="tree-list-item">${key}</li>`);
}
});
return list;
}