Als wir uns neulich in der SB darüber unterhalten haben, habe ich folgendes PoC zusammengeworfen. Allerdings kann ich auch kein JavaScript. Bitte nicht hauen
Code:
function FS() {
this.root = new Dir("", "");
this.cwd = this.root;
this.cd = function(dirName) {
if (dirName == ".." && this.cwd != this.root) {
this.cwd = this.cwd.pDir;
}
this.cwd.contains.forEach(function(element) {
if (element.dirName == dirName) {
this.cwd = element;
}
}, this);
}
this.ls = function() {
this.cwd.contains.forEach(function(element) {
if (element.dirName) {
console.log(element.dirName);
} else if (element.fileName) {
console.log(element.fileName);
}
});
}
this.pwd = function() {
p = "";
dir = this.cwd;
while (dir != this.root) {
p = "" + (dir.dirName) + "/" + p;
dir = dir.pDir;
}
p = "/" + p;
console.log(p);
}
}
function Dir(dirName, contains, pDir) {
this.pDir = pDir;
this.dirName = dirName;
this.contains = [];
this.add = function(o) {
if (o.hasOwnProperty("pDir")) {
o.pDir = this;
}
this.contains.push(o)
};
}
function File(fileName, fileContents) {
this.fileName = fileName;
this.fileContents = fileContents;
}
var fs = new FS();
// Dateien Anlegen
fs.root.add(new File("Katzen.txt", "Ich mag Katzen"));
fs.root.add(new File("KatzenSindToll.txt", "Ich mag Katzen, denn sie sind sehr gut"));
// Ordner "Katzenbilder" anlegen.
var katzenBilder = new Dir("Katzenbilder")
katzenBilder.add(new File("001.jpg", "BILD-001"));
katzenBilder.add(new File("002.jpg", "BILD-002"));
fs.root.add(katzenBilder);
// Unterordner "Extra süße Katzen" anlegen.
var extraAwwKatzenbilder = new Dir("Extra süße Katzen")
extraAwwKatzenbilder.add(new File("extra001.jpg", "xxx"));
extraAwwKatzenbilder.add(new File("extra002.jpg", "xxx"));
katzenBilder.add(extraAwwKatzenbilder);
// Sinnlos durch die Gegend navigieren.
console.log("------");
fs.cd("Katzenbilder");
fs.pwd();
fs.ls();
console.log("------");
fs.cd("Extra süße Katzen");
fs.pwd();
fs.ls();
console.log("------");
fs.cd("..");
fs.pwd();
fs.ls();
console.log("------");
fs.cd("..");
fs.pwd();
fs.ls();
console.log("------");
fs.cd("..");
fs.pwd();
fs.ls();