UNPKG

@openveo/api

Version:
71 lines (61 loc) 2.02 kB
'use strict'; /** * @module angularJs/expressions/ModuleExpression * @ignore */ var util = require('util'); var ElementExpression = process.requireApi('lib/angularJs/expressions/ElementExpression.js'); /** * A JavaScript module expression as angularJsApp.module('module'). * * @class ModuleExpression * @constructor * @ignore * @param {Object} expression The module call expression as returned by esprima */ function ModuleExpression(expression) { ModuleExpression.super_.call(this, expression); } module.exports = ModuleExpression; util.inherits(ModuleExpression, ElementExpression); /** * Validates that the expression is an AngularJS module definition expression. * * An AngularJS module definition expression must have two arguments: * - The name of the element to define * - An array of dependencies * * @return {Boolean} true if this is a valid AngularJS module definition expression, false otherwise */ ModuleExpression.prototype.isValid = function() { return (this.expression.arguments[0].type === 'Literal' && (this.expression.arguments.length === 1 || (this.expression.arguments.length === 2 && this.expression.arguments[1].type === 'ArrayExpression')) ); }; /** * Gets AngularJS module dependencies. * * @return {Array} The list of dependencies */ ModuleExpression.prototype.getDependencies = function() { var dependencies = []; if (this.isDefinition()) { this.expression.arguments[1].elements.forEach(function(dependency) { if (dependency.type === 'Literal') dependencies.push(dependency.value); }); } else dependencies.push(this.getName()); return dependencies; }; /** * Checks if the module expression is an AngularJS definition. * * angular.module() may be used to retrieve a previously registered module or to define a new one. * * @return {Boolean} true if this is a module definition, false otherwise */ ModuleExpression.prototype.isDefinition = function() { return (this.expression.arguments.length === 2); };