Skip to content

Commit d80c1ca

Browse files
committed
Added basic no-literals rules
1 parent 491f67f commit d80c1ca

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ module.exports = {
2323
'sort-comp': require('./lib/rules/sort-comp'),
2424
'require-extension': require('./lib/rules/require-extension'),
2525
'jsx-no-duplicate-props': require('./lib/rules/jsx-no-duplicate-props'),
26-
'jsx-max-props-per-line': require('./lib/rules/jsx-max-props-per-line')
26+
'jsx-max-props-per-line': require('./lib/rules/jsx-max-props-per-line'),
27+
'no-literals': require('./lib/rules/no-literals')
2728
},
2829
rulesConfig: {
2930
'jsx-uses-react': 0,
@@ -47,6 +48,7 @@ module.exports = {
4748
'sort-comp': 0,
4849
'require-extension': 0,
4950
'jsx-no-duplicate-props': 0,
50-
'jsx-max-props-per-line': 0
51+
'jsx-max-props-per-line': 0,
52+
'no-literals': 0
5153
}
5254
};

lib/rules/no-literals.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* @fileoverview Prevent using string literals in React component definition
3+
* @author Caleb Morris
4+
*/
5+
'use strict';
6+
7+
// ------------------------------------------------------------------------------
8+
// Rule Definition
9+
// ------------------------------------------------------------------------------
10+
11+
module.exports = function(context) {
12+
13+
function reportLiteralNode(node) {
14+
context.report(node, 'Missing JSX expression container around literal string');
15+
}
16+
17+
// --------------------------------------------------------------------------
18+
// Public
19+
// --------------------------------------------------------------------------
20+
21+
return {
22+
23+
Literal: function(node) {
24+
if (
25+
/[\S]/.test(node.value) &&
26+
node.parent &&
27+
node.parent.type !== 'JSXExpressionContainer'
28+
) {
29+
reportLiteralNode(node);
30+
}
31+
}
32+
33+
};
34+
35+
};
36+
37+
module.exports.schema = [{
38+
type: 'object',
39+
properties: {},
40+
additionalProperties: false
41+
}];

0 commit comments

Comments
 (0)