UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

56 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeNaslObj = void 0; const nasl_concepts_1 = require("@lcap/nasl-concepts"); function getParentKeyAndParentPath(nodePath) { const lastIndex = nodePath.lastIndexOf('.'); // 获取parentNodePath const parentNodePath = nodePath.substring(0, lastIndex); // 获取parentKey const namePath = nodePath.substring(lastIndex + 1); const parentKeyMatch = namePath.match(/([^\.\[\]]+)\[/); const parentKey = parentKeyMatch ? parentKeyMatch[1] : null; return { parentKey, parentNodePath, }; } /** * 合并 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) { const { parentNodePath, parentKey } = getParentKeyAndParentPath(node.nodePath); if (!parentNodePath) { continue; } const parentNode = map[parentNodePath] || (0, nasl_concepts_1.findNodeObjectByPath)(app, parentNodePath || ''); if (parentNode) { const parentArray = parentNode[parentKey]; if (Array.isArray(parentArray)) { // 检查是否已存在相同name的对象 const exists = parentArray.some(item => item.name === node.nasl.name); if (exists) { throw new Error(`名称 '${node.nasl.name}' 已存在,重复添加!`); } parentArray.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