-
Notifications
You must be signed in to change notification settings - Fork 0
/
dwtype-space-beforetypeop.js
executable file
·105 lines (89 loc) · 3.59 KB
/
dwtype-space-beforetypeop.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"use strict";
module.exports = {
meta: {
docs: {
description: "check DW type space",
category: "Stylistic Issues",
recommended: true
},
fixable: "whitespace",
schema: []
},
create: function (context) {
const sourceCode = context.getSourceCode();
function report(mainNode) {
context.report({
node: mainNode,
message: "space required before DW type assignment operator : ",
fix(fixer) {
return fixer.insertTextBefore(mainNode, " ");
}
});
}
function checkFunc(node) {
const maybecolon = sourceCode.getTokenBefore(node.returnDWType, 0);
if (maybecolon &&
maybecolon.type === "Punctuator") {
const brack = sourceCode.getTokenBefore(maybecolon, 0);
if (brack && brack.type === "Punctuator" && brack.value === ")") {
const hasSpacelead = sourceCode.isSpaceBetweenTokens(brack, maybecolon);
// const leadToken = sourceCode.getTokenBefore(maybecolon);
// const tailToken = sourceCode.getTokenAfter(maybecolon);
// const hasSpacelead = sourceCode.isSpaceBetweenTokens(leadToken, maybecolon);
// const hasSpacetail = sourceCode.isSpaceBetweenTokens(maybecolon, tailToken);
if (!hasSpacelead) {
report(maybecolon);
}
}
}
}
function checkIdt(node) {
const maybecolon = sourceCode.getTokenAfter(node, 0);
if (maybecolon &&
maybecolon.type === "Punctuator") {
const leadToken = sourceCode.getTokenBefore(maybecolon);
const tailToken = sourceCode.getTokenAfter(maybecolon);
const hasSpacelead = sourceCode.isSpaceBetweenTokens(leadToken, maybecolon);
const hasSpacetail = sourceCode.isSpaceBetweenTokens(maybecolon, tailToken);
if (!hasSpacelead) {
report(maybecolon);
}
}
}
function checkVar(node) {
const maybecolon = sourceCode.getTokenBefore(node.returnDWType, 0);
if (maybecolon &&
maybecolon.type === "Punctuator") {
const leadToken = sourceCode.getTokenBefore(maybecolon);
const tailToken = sourceCode.getTokenAfter(maybecolon);
const hasSpacelead = sourceCode.isSpaceBetweenTokens(leadToken, maybecolon);
const hasSpacetail = sourceCode.isSpaceBetweenTokens(maybecolon, tailToken);
if (!hasSpacelead) {
report(maybecolon);
}
}
}
function checkSpace(node) {
if (node.returnDWType) {
switch (node.type) {
case "FunctionDeclaration":
checkFunc(node);
break;
case "Identifier":
checkIdt(node);
break;
case "VariableDeclarator":
checkVar(node);
break;
default:
return;
}
}
}
return {
Identifier: checkSpace,
FunctionDeclaration: checkSpace,
VariableDeclarator: checkSpace
};
}
};