@lcap/nasl
Version:
NetEase Application Specific Language
65 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeNaslObj = exports.splitNaslObj = void 0;
const service_1 = require("@lcap/nasl-concepts/service");
const nasl_concepts_1 = require("@lcap/nasl-concepts");
/**
* 拆分 Nasl 对象
* @param app
*/
function splitNaslObj(app) {
const fileNodes = (0, service_1.getFileModuleNodesByNasl)(app);
const map = {};
for (const node of fileNodes) {
const parentNode = (0, nasl_concepts_1.findNodeObjectByPath)(app, node.parentNodePath || '');
map[node.parentNodePath] = parentNode;
}
for (const node of fileNodes) {
if (!node.parentNodePath) {
continue;
}
const nodeObj = node.nasl;
const parentNode = map[node.parentNodePath];
if (Array.isArray(parentNode[node.parentKey])) {
const findIndex = parentNode[node.parentKey].findIndex((item) => item === nodeObj);
parentNode[node.parentKey].splice(findIndex, 1);
}
else {
console.log(node, 2222);
}
}
return fileNodes;
}
exports.splitNaslObj = splitNaslObj;
/**
* 合并 Nasl 对象
* @param app
*/
function mergeNaslObj(fileNodes) {
const app = (fileNodes.find(node => node.nodePath === 'app')).nasl;
const map = {};
for (const node of fileNodes) {
map[node.nodePath] = node.nasl;
}
for (const node of fileNodes) {
if (!node.parentNodePath) {
continue;
}
const parentNode = map[node.parentNodePath] || (0, nasl_concepts_1.findNodeObjectByPath)(app, node.parentNodePath || '');
if (parentNode) {
if (Array.isArray(parentNode[node.parentKey])) {
parentNode[node.parentKey].push(node.nasl);
}
else {
console.error(node, 888);
}
}
else {
console.error(node, 999);
}
}
// console.log(app, 666);
return app;
}
exports.mergeNaslObj = mergeNaslObj;
//# sourceMappingURL=split.js.map