UNPKG

nlu

Version:

Use this package to link your projects together for local development.

43 lines (42 loc) 1.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const logging_1 = require("./logging"); exports.createTree = function (map, name, originalList, opts) { let tree = { [name]: {} }; let createItem = function (key, obj, keys) { obj[key] = obj[key] || {}; if (!(map[key] && Array.isArray(map[key].deps))) { opts.verbosity > 1 && logging_1.default.warning(`warning: no key named "${key}" in map.`); return; } if (!Array.isArray(map[key].deps)) { logging_1.default.warning(`warning: deps is not an array => ${util.inspect(map[key])}.`); return; } map[key].deps.forEach(function (d) { if (key !== d && keys.indexOf(d) < 0) { keys.push(d); let v2 = obj[key][d] = {}; createItem(d, v2, keys.slice(0)); } else { keys.push(d); obj[key][d] = null; } }); }; originalList.forEach(function (k) { tree[name] && createItem(k, tree[name], [name]); }); let cleanTree = function (k, val) { delete val[k]; Object.keys(val).forEach(function (key) { val[key] && cleanTree(key, val[key]); }); }; cleanTree(name, tree[name]); return tree; };