|
|
|
@ -9,31 +9,51 @@ var mapName = function(elm){ |
|
|
|
|
|
|
|
var findReturns = function(expr){ |
|
|
|
var returns = [] |
|
|
|
expr.body.forEach(function(expr){ |
|
|
|
if(expr.type === 'ReturnStatement'){ |
|
|
|
if(expr.argument.type === 'Literal'){ |
|
|
|
returns.push(expr.argument.value); |
|
|
|
} else if(expr.argument.type === 'ObjectExpression'){ |
|
|
|
returns.push('Object'); |
|
|
|
} else if(expr.argument.type === 'ArrayExpression'){ |
|
|
|
returns.push('Array'); |
|
|
|
} else if(expr.argument.type === 'FunctionExpression'){ |
|
|
|
returns.push('Function'); |
|
|
|
if(expr.type === 'BlockStatement'){ |
|
|
|
expr.body.forEach(function(expr){ |
|
|
|
if(expr.type === 'ReturnStatement'){ |
|
|
|
if(expr.argument.type === 'Literal'){ |
|
|
|
returns.push(expr.argument.value); |
|
|
|
} else if(expr.argument.type === 'ObjectExpression'){ |
|
|
|
returns.push('Object'); |
|
|
|
} else if(expr.argument.type === 'ArrayExpression'){ |
|
|
|
returns.push('Array'); |
|
|
|
} else if(expr.argument.type === 'FunctionExpression'){ |
|
|
|
returns.push('Function'); |
|
|
|
} else if(expr.argument.type === 'Identifier'){ |
|
|
|
returns.push(expr.argument.name); |
|
|
|
} |
|
|
|
} else if(expr.type === 'IfStatement'){ |
|
|
|
returns = returns.concat(findReturns(expr)); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else if(expr.type === 'IfStatement'){ |
|
|
|
returns = returns.concat(findReturns(expr.consequent)); |
|
|
|
if(expr.alternate){ |
|
|
|
returns = returns.concat(findReturns(expr.alternate)); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
return returns; |
|
|
|
}; |
|
|
|
|
|
|
|
var findRaises = function(expr){ |
|
|
|
var raises = [] |
|
|
|
expr.body.forEach(function(expr){ |
|
|
|
if(expr.type === 'ThrowStatement'){ |
|
|
|
if(expr.argument.type === 'NewExpression'){ |
|
|
|
raises.push(expr.argument.callee.name); |
|
|
|
if(expr.type === 'BlockStatement'){ |
|
|
|
expr.body.forEach(function(expr){ |
|
|
|
if(expr.type === 'ThrowStatement'){ |
|
|
|
if(expr.argument.type === 'NewExpression'){ |
|
|
|
raises.push(expr.argument.callee.name); |
|
|
|
} |
|
|
|
} else if(expr.type === 'IfStatement'){ |
|
|
|
raises = raises.concat(findRaises(expr)); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else if(expr.type === 'IfStatement'){ |
|
|
|
raises = raises.concat(findRaises(expr.consequent)); |
|
|
|
if(expr.alternate){ |
|
|
|
raises = raises.concat(findRaises(expr.alternate)); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
return raises; |
|
|
|
}; |
|
|
|
|
|
|
|
@ -87,6 +107,9 @@ var parseExpressions = function(expr){ |
|
|
|
returns: findReturns(expr.init.body), |
|
|
|
raises: findRaises(expr.init.body), |
|
|
|
}; |
|
|
|
} else if(expr.type === 'IfStatement'){ |
|
|
|
_parse(expr.consequent); |
|
|
|
_parse(expr.alternate); |
|
|
|
} else { |
|
|
|
_parse(expr.expression || expr.callee || expr.body || expr.declarations); |
|
|
|
} |
|
|
|
|