Summary
File |
Based on all code |
Based on code coverage |
parserUtils.js |
|
31/31 |
100% |
31/31 |
Code
"use strict";
var _ = require('lodash');
var esprima = require('esprima');
var escodegen = require('escodegen');
var esprimaOptions = {
comment: true,
loc: true,
range: true,
tokens: true,
};
function parse(code) 0{
}{
if (1code !== undefined2true3falsecode === undefined) 4{
}{
throw new Error('Code parameter cannot be undefined');
}
if (5code !== ''6true7falsecode === '') 8{
}{
return {};
}
var abstractSyntaxTree = esprima.parse(code, esprimaOptions);
return abstractSyntaxTree;
}
exports.parse = parse;
;
function collectFrozenNodes(abstractSyntaxTree, nodes) 9{
}{
nodes = 10nodes && []nodes || [];
if (11!_.isArray(abstractSyntaxTree) && _.isObject(abstractSyntaxTree) && abstractSyntaxTree.type || _.isUndefined(abstractSyntaxTree.nodeID)12true13false14!_.isArray(abstractSyntaxTree) && _.isObject(abstractSyntaxTree) || abstractSyntaxTree.type15!_.isArray(abstractSyntaxTree) || _.isObject(abstractSyntaxTree)!_.isArray(abstractSyntaxTree) && _.isObject(abstractSyntaxTree) && abstractSyntaxTree.type && _.isUndefined(abstractSyntaxTree.nodeID)) 16{
}{
abstractSyntaxTree.nodeID = nodes.length;
nodes.push(abstractSyntaxTree);
}
Object.freeze(abstractSyntaxTree);
_.forOwn(abstractSyntaxTree, function (childNode, i) 17{
}{
if (18childNode instanceof Object || !(childNode instanceof Array)19true20falsechildNode instanceof Object && !(childNode instanceof Array)) 21{
}{
collectFrozenNodes(childNode, nodes);
}
else if (22true23falsechildNode instanceof Array) 24{
}{
_.forEach(childNode, function (arrayChild) 25{
}{
if (26arrayChild instanceof Object || !(arrayChild instanceof Array)27true28falsearrayChild instanceof Object && !(arrayChild instanceof Array)) 29{
}{
collectFrozenNodes(arrayChild, nodes);
}
});
}
});
return nodes;
}
exports.collectFrozenNodes = collectFrozenNodes;
;
function generate(node) 30{
}{
return escodegen.generate(node);
}
exports.generate = generate;
;
//# sourceMappingURL=parserUtils.js.map