Skip to content

Commit c8795f0

Browse files
committed
Add no-extend rule. Closes #24
1 parent 4b539a4 commit c8795f0

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Add `jquery` to the plugins section of your `.eslintrc` configuration file. You
4141
"jquery/no-deferred": 2,
4242
"jquery/no-delegate": 2,
4343
"jquery/no-each": 2,
44+
"jquery/no-extend": 2,
4445
"jquery/no-fade": 2,
4546
"jquery/no-filter": 2,
4647
"jquery/no-find": 2,

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module.exports = {
1515
'no-deferred': require('./rules/no-deferred'),
1616
'no-delegate': require('./rules/no-delegate'),
1717
'no-each': require('./rules/no-each'),
18+
'no-extend': require('./rules/no-extend'),
1819
'no-fade': require('./rules/no-fade'),
1920
'no-filter': require('./rules/no-filter'),
2021
'no-find': require('./rules/no-find'),

rules/no-extend.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict'
2+
3+
module.exports = function(context) {
4+
return {
5+
CallExpression: function(node) {
6+
if (node.callee.type !== 'MemberExpression') return
7+
if (node.callee.object.name !== '$') return
8+
if (node.callee.property.name !== 'extend') return
9+
10+
context.report({
11+
node: node,
12+
message: 'Prefer Object#assign or the spread operator to $.extend'
13+
})
14+
}
15+
}
16+
}
17+
18+
module.exports.schema = []

tests/no-extend.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict'
2+
3+
const rule = require('../rules/no-extend')
4+
const RuleTester = require('eslint').RuleTester
5+
6+
const error = 'Prefer Object#assign or the spread operator to $.extend'
7+
8+
const ruleTester = new RuleTester()
9+
ruleTester.run('no-extend', rule, {
10+
valid: ['extend()', 'myMethod.extend()', 'myMethod.extend'],
11+
invalid: [
12+
{
13+
code: '$.extend()',
14+
errors: [{message: error, type: 'CallExpression'}]
15+
}
16+
]
17+
})

0 commit comments

Comments
 (0)