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);