@esydoc/doclet-parser
Advanced tools
Comparing version 2.0.1-beta.3 to 2.0.1-beta.4
@@ -497,2 +497,15 @@ /*! | ||
}; | ||
var createFn = function (node) { | ||
var properties = node.properties; | ||
if (!properties || !properties.length) { | ||
return new Function(); | ||
} | ||
else { | ||
var args = properties.map(function (node) { | ||
return node.name || node.type.names[0]; | ||
}); | ||
// 我们需要动态构造函数 | ||
return new (Function.bind.apply(Function, __spreadArrays([void 0], __spreadArrays(args, ['// do something']))))(); | ||
} | ||
}; | ||
var transofrmDataTreeNode2Value = function (node) { | ||
@@ -512,2 +525,12 @@ var finalValue = null; | ||
var stack = []; | ||
var resolvedStore = new Map(); // 标记已经复用的阶段 | ||
function record(key, value) { | ||
if (storeRef) { | ||
recordNodeValueForStore(storeRef, value, key); | ||
} | ||
else { | ||
// 第一次传进来的node就是enum节点 | ||
finalValue = value; | ||
} | ||
} | ||
traverseNode(node, function (node) { | ||
@@ -517,4 +540,2 @@ var _a; | ||
var properties = node.properties; | ||
var parent = node.parent; | ||
var value; | ||
switch (type) { | ||
@@ -524,8 +545,3 @@ case 'Object': | ||
var initValue = type === 'Object' ? {} : []; | ||
if (finalValue === null) { | ||
finalValue = initValue; // 保持对最外层数据的引用 | ||
} | ||
else { | ||
recordNodeValueForStore(storeRef, initValue, node.name); | ||
} | ||
record(node.name, initValue); | ||
storeRef = initValue; | ||
@@ -536,21 +552,11 @@ stack.push(initValue); | ||
case 'function': | ||
if (!properties || !properties.length) { | ||
value = new Function(); | ||
if (resolvedStore.has(node.name)) { | ||
record(node.name, resolvedStore.get(node.name)); | ||
} | ||
else { | ||
var args = properties.map(function (node) { | ||
return node.name || node.type.names[0]; | ||
}); | ||
// 我们需要动态构造函数 | ||
value = new (Function.bind.apply(Function, __spreadArrays([void 0], __spreadArrays(args, ['// do something']))))(); | ||
else if (properties && properties.length) { | ||
var fn = createFn(node); | ||
record(node.name, fn); | ||
// side effect params在上面代码已经处理了,不需要后续解析 | ||
node.properties = undefined; | ||
} | ||
// side effect params在上面代码已经处理了,不需要后续解析 | ||
node.properties = undefined; | ||
if (storeRef) { | ||
recordNodeValueForStore(storeRef, value, node.name); | ||
} | ||
else { | ||
// 第一次传进来的node就是函数节点 | ||
finalValue = value; | ||
} | ||
break; | ||
@@ -565,15 +571,13 @@ case 'Promise': | ||
case 'Enum': | ||
if (properties && properties.length) { | ||
var value_1 = properties[0].name; // Enum定义的name就是它的实际值 | ||
if (storeRef) { | ||
var exisedParent = parent; | ||
var key = exisedParent.type === POLYTYPE$1 ? exisedParent.name : node.name; | ||
recordNodeValueForStore(storeRef, value_1, key); | ||
} | ||
else { | ||
// 第一次传进来的node就是enum节点 | ||
finalValue = value_1; | ||
} | ||
node.properties = [properties[0]]; // 因为前期已经选定了首个值作为输出,后续复用也只解析这个 | ||
if (resolvedStore.has(node.name)) { | ||
record(node.name, resolvedStore.get(node.name)); | ||
} | ||
else if (properties && properties.length) { | ||
// Enum定义的name就是它的实际值 | ||
var childValue = properties[0].name; | ||
record(node.name, childValue); | ||
resolvedStore.set(node.name, childValue); | ||
// side effect enum 在上面代码已经处理了,不需要后续解析 | ||
node.properties = undefined; | ||
} | ||
else { | ||
@@ -584,3 +588,3 @@ throw new Error('Enum类型的数据至少存在一个枚举值'); | ||
default: | ||
recordNodeValueForStore(storeRef, type2Value(type, node), node.name); | ||
record(node.name, type2Value(type, node)); | ||
} | ||
@@ -587,0 +591,0 @@ }, function (node) { |
{ | ||
"name": "@esydoc/doclet-parser", | ||
"version": "2.0.1-beta.3", | ||
"version": "2.0.1-beta.4", | ||
"description": "The parser for doclet that it resolved by jsdoc", | ||
@@ -28,5 +28,5 @@ "author": "Alex <857276958@qq.com>", | ||
"dependencies": { | ||
"@esydoc/share": "^2.0.1-beta.3" | ||
"@esydoc/share": "^2.0.1-beta.4" | ||
}, | ||
"gitHead": "95b2d489b825378ee88f40f8eb9e5f3b8461caf1" | ||
"gitHead": "7dcb817a3a6e88cbedbe4ccccd13c03ef5e8a681" | ||
} |
790
36272
Updated@esydoc/share@^2.0.1-beta.4