Parse directory lines to object
by Aides
HTML
<div>
<p>Lines:</p>
<pre id="lines"></pre>
</div>
<div>
<p>Parsed:</p>
<pre id="parsed"></pre>
</div>
<div>
<p>Dir:</p>
<pre id="dir"></pre>
</div>
JavaScript
// Source Data
var sourceData = "C:\\\nC:\\Test\\\nC:\\Test\\Musik\\\nC:\\Beispielordner\\\nC:\\Beispielordner\\Unterordner 1\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 1\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 2\\\nC:\\Beispielordner\\Unterordner 1\\Unter-Unterordner 3\\\nC:\\Beispielordner\\Unterordner 2\\\nD:\\\nD:\\\Bilder\\\nD:\\Bilder\\Sonnenuntergang\\\nD:\\Bilder\\Vollmond\\\nD:\\Dokumente\\\nD:\\Dokumente\\a\\\nD:\\Dokumente\\a\\b\\";
var linesElement = document.getElementById('lines');
var parsedElement = document.getElementById('parsed');
var dirElement = document.getElementById('dir');
convert();
function convert() {
var splitLines = sourceData.split('\n');
var parsed = parseToObject(splitLines);
var dir = parseObjectToDir(parsed, '');
print(splitLines, parsed, dir);
}
function parseToObject(lines) {
var tree = {};
lines.forEach(function(line) {
var parts = line.split('\\').filter(function(v) {
return v
});
var element = tree;
for (var i = 0; i < parts.length; i++) {
element[parts[i]] || (element[parts[i]] = {});
element = element[parts[i]];
}
})
return tree;
}
function parseObjectToDir(obj, previousPath) {
var result = [];
Object.keys(obj).forEach(function(dir) {
var newElement = {
label: dir,
children: [],
zugewiesenerOrdner: previousPath + (previousPath ? '\\' : '') + dir
}
newElement.children = parseObjectToDir(obj[dir], newElement.zugewiesenerOrdner);
result.push(newElement)
})
return result;
}
function print(splitLines, parsed, dir)
{
splitLines.forEach(function(line) {
linesElement.innerHTML += line + '<br>';
})
parsedElement.innerHTML += JSON.stringify(parsed, null, 4).replace(/\\\\/g,"\\");
dirElement.innerHTML += JSON.stringify(dir, null, 4).replace(/\\\\/g,"\\");
}