UNPKG

2.22 kBJavaScriptView Raw
1/**
2 * require and specify a prefix for all module names
3 *
4 * When you create a new module, its name should start with the parameter you can define in your config object.
5 * The second parameter can be a Regexp wrapped in quotes.
6 * You can not prefix your modules by "ng" (reserved keyword for AngularJS modules) ("module-name": [2, "ng"])
7 *
8 * @styleguideReference {johnpapa} `y127` Naming - Modules
9 * @version 0.1.0
10 * @category naming
11 * @sinceAngularVersion 1.x
12 */
13'use strict';
14
15var utils = require('./utils/utils');
16
17module.exports = {
18 meta: {
19 schema: [{
20 type: ['string', 'object']
21 }]
22 },
23 create: function(context) {
24 return {
25
26 CallExpression: function(node) {
27 var prefix = context.options[0];
28 var convertedPrefix; // convert string from JSON .eslintrc to regex
29
30 if (prefix === undefined) {
31 return;
32 }
33
34 convertedPrefix = utils.convertPrefixToRegex(prefix);
35
36 if (utils.isAngularModuleDeclaration(node)) {
37 var name = node.arguments[0].value;
38
39 if (name !== undefined && name.indexOf('ng') === 0) {
40 context.report(node, 'The {{module}} module should not start with "ng". This is reserved for AngularJS modules', {
41 module: name
42 });
43 } else if (name !== undefined && !convertedPrefix.test(name)) {
44 if (typeof prefix === 'string' && !utils.isStringRegexp(prefix)) {
45 context.report(node, 'The {{module}} module should be prefixed by {{prefix}}', {
46 module: name,
47 prefix: prefix
48 });
49 } else {
50 context.report(node, 'The {{module}} module should follow this pattern: {{prefix}}', {
51 module: name,
52 prefix: prefix.toString()
53 });
54 }
55 }
56 }
57 }
58 };
59 }
60};