amos-tool
Version:
amos ui tool
53 lines (48 loc) • 2.29 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")), memorize = require("./memo");
function pathToTree(e) {
for (var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, t = r.pathKey, o = void 0 === t ? "path" : t, i = r.childrenKey, n = void 0 === i ? "children" : i, l = r.processor, a = [], u = 0; u < e.length; u++) for (var f = e[u].split("/"), h = a, d = 0; d < f.length; d++) {
var p = f[d];
if ("" !== p) {
for (var s = h, v = 0; v < h.length; v++) if (h[v][o] === p) {
h = h[v][n];
break;
}
if (s === h) {
var y, c = (y = {
key: d === f.length - 1 ? e[u] : f.slice(0, d + 1).join("/") + "/"
}, (0, _defineProperty2.default)(y, o, p), (0, _defineProperty2.default)(y, n, []),
y);
l && l(c, p), d === f.length - 1 && delete c[n], h.push(c), h = c[n];
}
}
}
return a;
}
function pathToRoutes(e) {
for (var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, t = r.pathKey, o = void 0 === t ? "path" : t, i = r.childrenKey, n = void 0 === i ? "children" : i, l = r.processor, a = [], u = 0; u < e.length; u++) for (var f = e[u].split("/"), h = a, d = 0; d < f.length; d++) {
var p = f[d];
if ("" === p) break;
var s = h, v = void 0;
for (v = 0; v < h.length; v++) if (h[v][o] === p) {
h = h[v][n];
break;
}
if (s === h) {
var y, c = (y = {
key: d === f.length - 1 ? e[u] : f.slice(0, d + 1).join("/") + "/"
}, (0, _defineProperty2.default)(y, o, p), (0, _defineProperty2.default)(y, n, []),
y);
l && l(c, p), h[v] = c, h = c[n];
} else delete h[n];
}
return a;
}
function beautifyRoutes(e) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, t = r.childrenKey, o = void 0 === t ? "children" : t;
e.forEach((function(e) {
o in e && e[o] && (e[o].length > 0 ? beautifyRoutes(e[o], r) : delete e[o]);
}));
}
module.exports = pathToTree, module.exports.pathToRoutes = pathToRoutes, module.exports.beautifyRoutes = beautifyRoutes,
module.exports.memoPathToTree = memorize(pathToTree);