Skip to content

Commit f056da2

Browse files
committed
Update rules for ESLint 0.13.0
1 parent 9acd02e commit f056da2

File tree

8 files changed

+51
-82
lines changed

8 files changed

+51
-82
lines changed

.eslintrc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
"env": {
33
"node": true
44
},
5-
"settings": {
6-
"ecmascript": 6,
7-
"jsx": true
5+
ecmaFeatures: {
6+
jsx: true
87
},
98
"globals": {
109
},

lib/rules/self-closing-comp.js

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,13 @@
1010

1111
module.exports = function(context) {
1212

13-
// HTML5 and SVG elements whitelist
14-
var standardElements = [
15-
'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body',
16-
'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details',
17-
'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2',
18-
'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen',
19-
'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript',
20-
'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby',
21-
's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup',
22-
'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var',
23-
'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon',
24-
'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'
25-
];
13+
var tagConvention = /^[a-z]|\-/;
14+
function isTagName(name) {
15+
return tagConvention.test(name);
16+
}
2617

2718
function isComponent(node) {
28-
return node.name && node.name.type === 'XJSIdentifier' && standardElements.indexOf(node.name.name) === -1;
19+
return node.name && node.name.type === 'JSXIdentifier' && !isTagName(node.name.name);
2920
}
3021

3122
function hasChildren(node) {
@@ -44,7 +35,7 @@ module.exports = function(context) {
4435

4536
return {
4637

47-
'XJSOpeningElement': function(node) {
38+
'JSXOpeningElement': function(node) {
4839
if (!isComponent(node) || node.selfClosing || hasChildren(node)) {
4940
return;
5041
}

lib/rules/wrap-multilines.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module.exports = function(context) {
2424
}
2525

2626
function check(node) {
27-
if (!node || node.type !== 'XJSElement') {
27+
if (!node || node.type !== 'JSXElement') {
2828
return;
2929
}
3030

tests/lib/rules/display-name.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ eslintTester.addRuleTest('lib/rules/display-name', {
2727
return <div>Hello {this.props.name}</div>;\
2828
}\
2929
});',
30-
settings: {
31-
ecmascript: 6,
32-
jsx: true
30+
ecmaFeatures: {
31+
jsx: true
3332
}
3433
}, {
3534
code: '\
@@ -39,9 +38,8 @@ eslintTester.addRuleTest('lib/rules/display-name', {
3938
return <div>Hello {this.props.name}</div>;\
4039
}\
4140
});',
42-
settings: {
43-
ecmascript: 6,
44-
jsx: true
41+
ecmaFeatures: {
42+
jsx: true
4543
}
4644
}
4745
],
@@ -54,9 +52,8 @@ eslintTester.addRuleTest('lib/rules/display-name', {
5452
return <div>Hello {this.props.name}</div>;\
5553
}\
5654
});',
57-
settings: {
58-
ecmascript: 6,
59-
jsx: true
55+
ecmaFeatures: {
56+
jsx: true
6057
},
6158
errors: [{
6259
message: 'Component definition is missing display name'

tests/lib/rules/no-multi-comp.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ eslintTester.addRuleTest('lib/rules/no-multi-comp', {
2727
return <Hello name="John" />;\
2828
}\
2929
});',
30-
settings: {
31-
ecmascript: 6,
32-
jsx: true
30+
ecmaFeatures: {
31+
jsx: true
3332
}
3433
}
3534
],
@@ -47,9 +46,8 @@ eslintTester.addRuleTest('lib/rules/no-multi-comp', {
4746
return <Hello name="John" />;\
4847
}\
4948
});',
50-
settings: {
51-
ecmascript: 6,
52-
jsx: true
49+
ecmaFeatures: {
50+
jsx: true
5351
},
5452
errors: [{
5553
message: 'Declare only one React component per file'

tests/lib/rules/prop-types.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@ eslintTester.addRuleTest('lib/rules/prop-types', {
2929
return <div>Hello {this.props.name}</div>;\
3030
}\
3131
});',
32-
settings: {
33-
ecmascript: 6,
34-
jsx: true
32+
ecmaFeatures: {
33+
jsx: true
3534
}
3635
}
3736
],
@@ -44,9 +43,8 @@ eslintTester.addRuleTest('lib/rules/prop-types', {
4443
return <div>Hello {this.props.name}</div>;\
4544
}\
4645
});',
47-
settings: {
48-
ecmascript: 6,
49-
jsx: true
46+
ecmaFeatures: {
47+
jsx: true
5048
},
5149
errors: [{
5250
message: 'Component definition is missing props validation'

tests/lib/rules/self-closing-comp.js

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,49 +21,43 @@ eslintTester.addRuleTest('lib/rules/self-closing-comp', {
2121
valid: [
2222
{
2323
code: 'var contentContainer = <div className="content"></div>;',
24-
settings: {
25-
ecmascript: 6,
26-
jsx: true
24+
ecmaFeatures: {
25+
jsx: true
2726
}
2827
}, {
2928
code: 'var HelloJohn = <Hello name="John" />;',
30-
settings: {
31-
ecmascript: 6,
32-
jsx: true
29+
ecmaFeatures: {
30+
jsx: true
3331
}
3432
}, {
3533
code: 'var Profile = <Hello name="John"><img src="picture.png" /></Hello>;',
36-
settings: {
37-
ecmascript: 6,
38-
jsx: true
34+
ecmaFeatures: {
35+
jsx: true
3936
}
4037
}
4138
],
4239

4340
invalid: [
4441
{
4542
code: 'var HelloJohn = <Hello name="John"></Hello>;',
46-
settings: {
47-
ecmascript: 6,
48-
jsx: true
43+
ecmaFeatures: {
44+
jsx: true
4945
},
5046
errors: [{
5147
message: 'Empty components are self-closing'
5248
}]
5349
}, {
5450
code: 'var HelloJohn = <Hello name="John">\n</Hello>;',
55-
settings: {
56-
ecmascript: 6,
57-
jsx: true
51+
ecmaFeatures: {
52+
jsx: true
5853
},
5954
errors: [{
6055
message: 'Empty components are self-closing'
6156
}]
6257
}, {
6358
code: 'var HelloJohn = <Hello name="John"> </Hello>;',
64-
settings: {
65-
ecmascript: 6,
66-
jsx: true
59+
ecmaFeatures: {
60+
jsx: true
6761
},
6862
errors: [{
6963
message: 'Empty components are self-closing'

tests/lib/rules/wrap-multilines.js

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
2626
return <p>Hello {this.props.name}</p>;\
2727
}\
2828
});',
29-
settings: {
30-
ecmascript: 6,
31-
jsx: true
29+
ecmaFeatures: {
30+
jsx: true
3231
}
3332
}, {
3433
code: '\
@@ -41,15 +40,13 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
4140
);\
4241
}\
4342
});',
44-
settings: {
45-
ecmascript: 6,
46-
jsx: true
43+
ecmaFeatures: {
44+
jsx: true
4745
}
4846
}, {
4947
code: 'var hello = <p>Hello</p>;',
50-
settings: {
51-
ecmascript: 6,
52-
jsx: true
48+
ecmaFeatures: {
49+
jsx: true
5350
}
5451
}, {
5552
code: '\
@@ -58,9 +55,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
5855
<p>Hello</p>\n\
5956
</div>\n\
6057
);',
61-
settings: {
62-
ecmascript: 6,
63-
jsx: true
58+
ecmaFeatures: {
59+
jsx: true
6460
}
6561
}, {
6662
code: '\
@@ -70,9 +66,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
7066
<p>Hello</p>\n\
7167
</div>\n\
7268
);',
73-
settings: {
74-
ecmascript: 6,
75-
jsx: true
69+
ecmaFeatures: {
70+
jsx: true
7671
}
7772
}
7873
],
@@ -87,9 +82,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
8782
</div>;\
8883
}\
8984
});',
90-
settings: {
91-
ecmascript: 6,
92-
jsx: true
85+
ecmaFeatures: {
86+
jsx: true
9387
},
9488
errors: [{
9589
message: 'Missing parentheses around multilines JSX'
@@ -99,9 +93,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
9993
var hello = <div>\n\
10094
<p>Hello</p>\n\
10195
</div>;',
102-
settings: {
103-
ecmascript: 6,
104-
jsx: true
96+
ecmaFeatures: {
97+
jsx: true
10598
},
10699
errors: [{
107100
message: 'Missing parentheses around multilines JSX'
@@ -112,9 +105,8 @@ eslintTester.addRuleTest('lib/rules/wrap-multilines', {
112105
hello = <div>\n\
113106
<p>Hello</p>\n\
114107
</div>;',
115-
settings: {
116-
ecmascript: 6,
117-
jsx: true
108+
ecmaFeatures: {
109+
jsx: true
118110
},
119111
errors: [{
120112
message: 'Missing parentheses around multilines JSX'

0 commit comments

Comments
 (0)