Recursive cfg breaker
by Ben Clayton
JavaScript
var cfg = `
Manchester
LB1
A
B
C
D
E
LB2
LB3
`;
function parse(lvl, lines, arr) {
if ( lvl > 100) return;
while (lines.length) {
var line = lines[0];
var nm = line.replace(/\t/g, '');
if (nm) {
var obj = {
name: nm,
children: []
};
var indent = line.match(/\s*/)[0].length;
if (indent > lvl) {
parse(lvl + 1, lines, arr[arr.length - 1].children);
} else if (indent == lvl) {
arr.push(obj)
} else {
return;
}
}
lines.unshift();
}
return;
}
var lines = cfg.split('\n');
var struct = [];
debugger;
parse(0, lines, struct);
console.log(struct);