Skip to content

Commit 07fa204

Browse files
authored
Merge pull request dgraham#5 from wyvernnot/master
Add no-size rule (fix dgraham#4)
2 parents f88a4a0 + 23eb200 commit 07fa204

File tree

4 files changed

+58
-0
lines changed

4 files changed

+58
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Add `jquery` to the plugins section of your `.eslintrc` configuration file. You
5959
"jquery/no-proxy": 2,
6060
"jquery/no-serialize": 2,
6161
"jquery/no-show": 2,
62+
"jquery/no-size": 2,
6263
"jquery/no-sizzle": 2,
6364
"jquery/no-slide": 2,
6465
"jquery/no-text": 2,

index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ module.exports = {
3131
'no-parse-html': require('./rules/no-parse-html'),
3232
'no-prop': require('./rules/no-prop'),
3333
'no-proxy': require('./rules/no-proxy'),
34+
'no-size': require('./rules/no-size'),
3435
'no-sizzle': require('./rules/no-sizzle'),
3536
'no-serialize': require('./rules/no-serialize'),
3637
'no-show': require('./rules/no-show'),
@@ -76,6 +77,7 @@ module.exports = {
7677
"jquery/no-proxy": 2,
7778
"jquery/no-serialize": 2,
7879
"jquery/no-show": 2,
80+
"jquery/no-size": 2,
7981
"jquery/no-sizzle": 2,
8082
"jquery/no-slide": 2,
8183
"jquery/no-text": 2,

rules/no-size.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const utils = require('./utils.js')
4+
5+
module.exports = function(context) {
6+
return {
7+
CallExpression: function(node) {
8+
if (node.callee.type !== 'MemberExpression') return
9+
if (node.callee.property.name !== 'size') return
10+
11+
if (utils.isjQuery(node)) {
12+
context.report({
13+
node: node,
14+
message: 'Prefer length to $.size'
15+
})
16+
}
17+
}
18+
}
19+
}
20+
21+
module.exports.schema = []

tests/no-size.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
const rule = require('../rules/no-size')
4+
const RuleTester = require('eslint').RuleTester
5+
6+
const error = 'Prefer length to $.size'
7+
8+
const ruleTester = new RuleTester()
9+
ruleTester.run('no-size', rule, {
10+
valid: [
11+
'size()',
12+
'[].size()',
13+
'div.size()',
14+
'div.size'
15+
],
16+
invalid: [
17+
{
18+
code: '$("div").size()',
19+
errors: [{message: error, type: 'CallExpression'}]
20+
},
21+
{
22+
code: '$div.size()',
23+
errors: [{message: error, type: 'CallExpression'}]
24+
},
25+
{
26+
code: '$("div").first().size()',
27+
errors: [{message: error, type: 'CallExpression'}]
28+
},
29+
{
30+
code: '$("div").append($("input").size())',
31+
errors: [{message: error, type: 'CallExpression'}]
32+
}
33+
]
34+
})

0 commit comments

Comments
 (0)