UNPKG

escomplex-coffee

Version:

Software complexity analysis for CoffeeScript projects. CoffeeScript-specific wrapper around escomplex.

88 lines (72 loc) 3.13 kB
// Generated by CoffeeScript 1.9.0 (function() { var amdPathAliases, createDependency, getName, processAmdRequire, processAmdRequireConfig, processAmdRequireConfigProperty, processAmdRequireItem, processCommonJSRequire, processRequire, resolveAmdRequireDependency, resolveRequireDependency, setAmdPathAlias, stripString; getName = require("./util").getName; stripString = function(str) { return str.replace(/['"]+/g, ''); }; amdPathAliases = {}; createDependency = function(node, path, type) { return { line: node.locationData.first_line, path: path, type: type }; }; resolveRequireDependency = function(dependency, resolver) { if (getName(dependency) === 'Value' && getName(dependency.base) === 'Literal') { if (typeof resolver === 'function') { return resolver(dependency.base.value); } return stripString(dependency.base.value); } return '* dynamic dependency *'; }; resolveAmdRequireDependency = function(dependency) { dependency = stripString(dependency); return amdPathAliases[dependency] || dependency; }; processAmdRequireItem = function(node, item) { return createDependency(node, resolveRequireDependency(item, resolveAmdRequireDependency), 'AMD'); }; processAmdRequire = function(node) { if (getName(node.args[0]) === 'Value' && getName(node.args[0].base) === "Arr") { return node.args[0].base.objects.map(processAmdRequireItem.bind(null, node)); } if (getName(node.args[0]) === 'Value' && getName(node.args[0].base) === "Literal") { return processAmdRequireItem(node, node.args[0]); } return createDependency(node, '* dynamic dependencies *', 'AMD'); }; processCommonJSRequire = function(node) { return createDependency(node, resolveRequireDependency(node.args[0]), 'CommonJS'); }; setAmdPathAlias = function(alias) { if (getName(alias.variable) === 'Value' && getName(alias.variable.base) === 'Literal' && getName(alias.value) === 'Value' && getName(alias.value.base) === 'Literal') { amdPathAliases[stripString(alias.variable.base.value)] = stripString(alias.value.base.value); } }; processAmdRequireConfigProperty = function(property) { if (getName(property.variable) === 'Value' && getName(property.variable.base) === 'Literal' && property.variable.base.value === 'paths' && getName(property.value) === 'Value' && getName(property.value.base) === 'Obj') { property.value.base.properties.forEach(setAmdPathAlias); } }; processAmdRequireConfig = function(args) { if (args.length === 1 && getName(args[0]) === 'Value' && getName(args[0].base) === 'Obj') { args[0].base.properties.forEach(processAmdRequireConfigProperty); } }; processRequire = function(node) { if (node.args.length === 1) { return processCommonJSRequire(node); } if (node.args.length === 2) { return processAmdRequire(node); } }; module.exports = { amdPathAliases: amdPathAliases, processAmdRequireConfig: processAmdRequireConfig, processRequire: processRequire }; }).call(this);