Skip to content

Commit eccb576

Browse files
authored
[Feature] Uppercase var and Ignore js func
1 parent 69997b6 commit eccb576

1 file changed

Lines changed: 41 additions & 30 deletions

File tree

index.js

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,48 @@
11
function isClassUsage(node) {
2-
return ['FunctionDeclaration', 'NewExpression', 'MemberExpression'].indexOf(node.parent.type) > -1;
2+
return ['FunctionDeclaration', 'NewExpression', 'MemberExpression'].indexOf(node.parent.type) > -1;
3+
}
4+
5+
function contains(a, obj) {
6+
for (var i = 0; i < a.length; i++) {
7+
if (a[i] === obj) {
8+
return true;
9+
}
10+
}
11+
return false;
312
}
413

514
module.exports = {
6-
rules: {
7-
snakecase: {
8-
meta: {
9-
fixable: true,
10-
},
11-
create(context) {
12-
return {
13-
Identifier(node) {
14-
var name = node.name;
15-
var split = name.split(/(?=[A-Z])/);
16-
if (split.length > 1) {
17-
if (isClassUsage(node)) {
18-
return true;
19-
}
20-
// this has some uppercase letters
21-
context.report({
22-
message: 'Identifiers must be snake case: {{ identifier }}',
23-
node: node,
24-
data: {
25-
identifier: node.name,
26-
},
27-
// fix(fixer) {
28-
// return fixer.replaceText(node, split.map(function(piece){ return piece.replace('_', '').toLowerCase(); }).join('_'));
29-
// }
30-
})
15+
rules: {
16+
snakecase: {
17+
meta: {
18+
fixable: true,
19+
},
20+
create(context) {
21+
return {
22+
Identifier(node) {
23+
var name = node.name;
24+
var array_system_var = ["parseInt", "parseFloat", "isNaN", "isFinite", "decodeURI", "decodeURIComponent", "encodeURI", "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "indexOf", "forEach", "charAt", "charCodeAt", "endsWith", "lastIndexOf", "startsWith", "toLowerCase", "toLocaleLowerCase", "toUpperCase", "toLocaleUpperCase", "toFixed", "toPrecision", "setInterval", "clearInterval", "setTimeout", "toDateString", "toTimeString", "getTime", "getFullYear", "getUTCFullYear", "getMonth", "getUTCMonth", "getDate", "getUTCDate", "getDay", "getUTCDay", "getHours", "getUTCHours", "getMinutes", "getUTCMinutes", "getSeconds", "getUTCSeconds", "getMilliseconds", "getUTCMilliseconds", "getTimeZoneOffset", "setTime", "setMilliseconds", "setUTCMilliseconds", "setSeconds", "setUTCSeconds", "setMinutes", "setUTCMinutes", "setHours", "setUTCHours", "setDate", "setUTCDate", "setMonth", "setUTCMonth", "setFullYear", "setUTCFullYear", "toUTCString", "toISOString", "toJSON"];
25+
var split = name.split(/(?=[A-Z])/);
26+
var split_az = name.split(/(?=[a-z])/);
27+
if ((split.length > 1 && split_az.length > 1) && !contains(array_system_var, name)) {
28+
if (isClassUsage(node)) {
29+
return true;
30+
}
31+
// this has some uppercase letters
32+
context.report({
33+
message: 'Identifiers must be snake case: {{ identifier }}',
34+
node: node,
35+
data: {
36+
identifier: node.name,
37+
},
38+
// fix(fixer) {
39+
// return fixer.replaceText(node, split.map(function(piece){ return piece.replace('_', '').toLowerCase(); }).join('_'));
40+
// }
41+
})
42+
}
43+
}
44+
}
3145
}
32-
}
3346
}
34-
}
3547
}
36-
}
37-
}
48+
}

0 commit comments

Comments
 (0)