escomplex-coffee
Version:
Software complexity analysis for CoffeeScript projects. CoffeeScript-specific wrapper around escomplex.
57 lines (49 loc) • 1.24 kB
JavaScript
// Generated by CoffeeScript 1.9.0
(function() {
'use strict';
var analyse, coffee, escomplex, getAst, walker;
coffee = require('coffee-script');
escomplex = require('escomplex');
walker = require('./walker');
analyse = function(source, options) {
options || (options = {});
if (Array.isArray(source)) {
return escomplex.analyse(source.map(function(s) {
return {
ast: getAst(s.code, options.ignoreErrors),
path: s.path
};
}).filter(function(s) {
return !!s.ast;
}), walker, options);
}
return escomplex.analyse(getAst(source, options.ignoreErrors), walker, options);
};
exports.analyse = analyse;
getAst = function(source, ignoreErrors) {
var ast, e, lastExp;
if (source.length === 0) {
return;
}
ast = null;
try {
ast = coffee.nodes(source);
} catch (_error) {
e = _error;
if (ignoreErrors) {
return;
}
throw e;
}
lastExp = ast.expressions[ast.expressions.length - 1];
ast.loc = {
start: {
line: ast.locationData.first_line
},
end: {
line: lastExp.locationData.last_line
}
};
return ast;
};
}).call(this);