module.exports = function parsen(str) { function setpath(obj, path, value) { if (typeof obj !== "object" || !obj) { throw new Error("obj is not Object"); } if (typeof path !== "string" || path === "") { throw new Error("path must be string with length > 0"); } var arr = path.split("."); var done = false; var t = obj; if (arr.length > 1) { while (arr.length && t && !done) { var check = arr.shift(); if (typeof t[check] === "object" && arr.length > 0) { t = t[check]; } else { done = true; arr.unshift(check); } } var xt = t; while (arr.length) { var tt = arr.shift(); if (arr.length) { //go deeper xt = xt[tt] = {}; } else { //last xt[tt] = value; } } } else { if (arr.length === 1 && arr[0] !== "") { t[arr[0]] = value; } } } var r = { name: "", title: "", content: "", data: {}, templates: {}, scripts: {}, styles: {}, pages: {}, elements: {}, elements_c: {}, commands: {}, comments: {}, structures: {}, libs: [], roots: [], langs: {}, meta: {} }; //r.raw = str; var reg = new RegExp(/\