@markof/eslint-plugin-no-chinese 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/lib/index.js +21 -0
- package/lib/rules/no-chinese-code.js +29 -0
- package/lib/rules/no-chinese-comment.js +29 -0
- package/lib/rules/no-chinese-console.js +27 -0
- package/package.json +29 -0
- package/tests/index.js +53 -0
package/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# eslint-plugin-no-chinese
|
2
|
+
eslint plugin to forbid chinese
|
3
|
+
|
4
|
+
## Install
|
5
|
+
```
|
6
|
+
npm i @markof/eslint-plugin-no-chinese --save-dev
|
7
|
+
```
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
Add '@markof/eslint-plugin-no-chinese' to plugins in .eslintrc file.
|
11
|
+
```javascript
|
12
|
+
{
|
13
|
+
"plugins": [
|
14
|
+
"@markof/eslint-plugin-no-chinese"
|
15
|
+
]
|
16
|
+
}
|
17
|
+
```
|
18
|
+
|
19
|
+
Config rules in .eslintrc file.
|
20
|
+
```javascript
|
21
|
+
{
|
22
|
+
"rules": {
|
23
|
+
"@markof/eslint-plugin-no-chinese/no-chinese-code": "error",
|
24
|
+
"@markof/eslint-plugin-no-chinese/no-chinese-comment": "error",
|
25
|
+
"@markof/eslint-plugin-no-chinese/no-chinese-console": "error",
|
26
|
+
}
|
27
|
+
}
|
28
|
+
```
|
package/lib/index.js
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
const pkg = require('../package.json')
|
2
|
+
|
3
|
+
const plugin = {
|
4
|
+
meta: {
|
5
|
+
name: pkg.name,
|
6
|
+
version: pkg.version,
|
7
|
+
},
|
8
|
+
configs: {},
|
9
|
+
rules: {
|
10
|
+
"no-chinese-code": require('./rules/no-chinese-code.js'),
|
11
|
+
"no-chinese-comment": require('./rules/no-chinese-comment.js'),
|
12
|
+
"no-chinese-console": require('./rules/no-chinese-console.js'),
|
13
|
+
},
|
14
|
+
processors: {}
|
15
|
+
}
|
16
|
+
|
17
|
+
// for ESM
|
18
|
+
export default plugin;
|
19
|
+
|
20
|
+
// OR for CommonJS
|
21
|
+
module.exports = plugin;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
const REGEX = /[\u4e00-\u9fff\uff00-\uffef\u3000-\u303f\u2014\u2018-\u2019\u2026\u201c\u201d]/
|
3
|
+
|
4
|
+
function hasChinese(value) {
|
5
|
+
return REGEX.test(value)
|
6
|
+
}
|
7
|
+
|
8
|
+
module.exports = {
|
9
|
+
create: function(context) {
|
10
|
+
return {
|
11
|
+
Literal: function(node) {
|
12
|
+
const { value } = node
|
13
|
+
// check if the node is in the console
|
14
|
+
if (node && node.parent && node.parent.callee && node.parent.callee.object && node.parent.callee.object.name === 'console') {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
if (hasChinese(value)) {
|
18
|
+
context.report({
|
19
|
+
node,
|
20
|
+
message: '{{ str }} Avoid using Chinese in the code',
|
21
|
+
data: {
|
22
|
+
str: node.value,
|
23
|
+
},
|
24
|
+
});
|
25
|
+
}
|
26
|
+
},
|
27
|
+
};
|
28
|
+
},
|
29
|
+
};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
const REGEX = /[\u4e00-\u9fff\uff00-\uffef\u3000-\u303f\u2014\u2018-\u2019\u2026\u201c\u201d]/
|
2
|
+
|
3
|
+
function hasChinese(value) {
|
4
|
+
return REGEX.test(value)
|
5
|
+
}
|
6
|
+
|
7
|
+
module.exports = {
|
8
|
+
create: function (context) {
|
9
|
+
|
10
|
+
const sourceCode = context.getSourceCode()
|
11
|
+
|
12
|
+
return {
|
13
|
+
Program() {
|
14
|
+
const comments = sourceCode.getAllComments();
|
15
|
+
comments.forEach(comment => {
|
16
|
+
if (hasChinese(comment.value)) {
|
17
|
+
context.report({
|
18
|
+
node: comment,
|
19
|
+
message: '{{ str }} Avoid using Chinese in the comments.',
|
20
|
+
data: {
|
21
|
+
str: comment.value,
|
22
|
+
},
|
23
|
+
});
|
24
|
+
}
|
25
|
+
})
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
const REGEX = /[\u4e00-\u9fff\uff00-\uffef\u3000-\u303f\u2014\u2018-\u2019\u2026\u201c\u201d]/
|
3
|
+
|
4
|
+
function hasChinese(value) {
|
5
|
+
return REGEX.test(value)
|
6
|
+
}
|
7
|
+
|
8
|
+
module.exports = {
|
9
|
+
create: function(context) {
|
10
|
+
return {
|
11
|
+
Literal: function(node) {
|
12
|
+
const { value } = node;
|
13
|
+
if (node && node.parent && node.parent.callee && node.parent.callee.object && node.parent.callee.object.name === 'console') {
|
14
|
+
if (hasChinese(value)) {
|
15
|
+
context.report({
|
16
|
+
node,
|
17
|
+
message: '{{ str }} Avoid using Chinese in the console.',
|
18
|
+
data: {
|
19
|
+
str: node.value,
|
20
|
+
},
|
21
|
+
});
|
22
|
+
}
|
23
|
+
}
|
24
|
+
},
|
25
|
+
};
|
26
|
+
},
|
27
|
+
};
|
package/package.json
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"name": "@markof/eslint-plugin-no-chinese",
|
3
|
+
"version": "1.0.2",
|
4
|
+
"description": "eslint plugin to forbid chinese",
|
5
|
+
"keywords": ["eslint", "eslint-plugin", "chinese"],
|
6
|
+
"repository": "https://github.com/markof/eslint-plugin-no-chinese",
|
7
|
+
"author": "Markof",
|
8
|
+
"main": "lib/index.js",
|
9
|
+
"scripts": {
|
10
|
+
"lint": "eslint .",
|
11
|
+
"test": "mocha tests --recursive"
|
12
|
+
},
|
13
|
+
"dependencies": {
|
14
|
+
"requireindex": "^1.2.0"
|
15
|
+
},
|
16
|
+
"devDependencies": {
|
17
|
+
"eslint": "^8.0.1",
|
18
|
+
"eslint-plugin-eslint-plugin": "^4.0.1",
|
19
|
+
"eslint-plugin-node": "^11.1.0",
|
20
|
+
"mocha": "^9.2.2"
|
21
|
+
},
|
22
|
+
"engines": {
|
23
|
+
"node": ">= 16"
|
24
|
+
},
|
25
|
+
"peerDependencies": {
|
26
|
+
"eslint": ">=6"
|
27
|
+
},
|
28
|
+
"license": "ISC"
|
29
|
+
}
|
package/tests/index.js
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
const RuleTester = require("eslint").RuleTester
|
2
|
+
var ruleTester = new RuleTester()
|
3
|
+
const ruleNoChineseCode = require("../lib/rules/no-chinese-code")
|
4
|
+
const ruleNoChineseComments = require("../lib/rules/no-chinese-comments")
|
5
|
+
const ruleNoChineseConsole = require("../lib/rules/no-chinese-console")
|
6
|
+
|
7
|
+
ruleTester.run("no-chinese-code", ruleNoChineseCode, {
|
8
|
+
valid: ["function test(d, e, f) { console.log('中文'); return 'chinese' }"],
|
9
|
+
invalid: [
|
10
|
+
{
|
11
|
+
code: "function test(d, e, f) { console.log('中文'); return '中文' }",
|
12
|
+
errors: [{message: "中文 Avoid using Chinese in the code"}]
|
13
|
+
},
|
14
|
+
{
|
15
|
+
code: "function test(d, e, f) { console.log('chinese'); return 'it’s name is chinese' }",
|
16
|
+
errors: [{message: "it’s name is chinese Avoid using Chinese in the code"}]
|
17
|
+
},
|
18
|
+
{
|
19
|
+
code: "function test(d, e, f) {return 'it“s name is chinese'}",
|
20
|
+
errors: [{message: "it“s name is chinese Avoid using Chinese in the code"}]
|
21
|
+
},
|
22
|
+
],
|
23
|
+
})
|
24
|
+
|
25
|
+
ruleTester.run("no-chinese-console", ruleNoChineseConsole, {
|
26
|
+
valid: ["function test(d, e, f) { console.log('chinese'); return 'chinese' }"],
|
27
|
+
invalid: [
|
28
|
+
{
|
29
|
+
code: "function test(d, e, f) { console.log('中文'); return 'chinese' }",
|
30
|
+
errors: [{
|
31
|
+
message: "中文 Avoid using Chinese in the console.",
|
32
|
+
}]
|
33
|
+
},
|
34
|
+
],
|
35
|
+
})
|
36
|
+
|
37
|
+
ruleTester.run("no-chinese-comments", ruleNoChineseComments, {
|
38
|
+
valid: [`// this is a comment`, `/* this is a comment */`],
|
39
|
+
invalid: [
|
40
|
+
{
|
41
|
+
code: `// 中文`,
|
42
|
+
errors: [{
|
43
|
+
message: " 中文 Avoid using Chinese in the comments.",
|
44
|
+
}]
|
45
|
+
},
|
46
|
+
{
|
47
|
+
code: `/* 中文 */`,
|
48
|
+
errors: [{
|
49
|
+
message: " 中文 Avoid using Chinese in the comments.",
|
50
|
+
}]
|
51
|
+
},
|
52
|
+
],
|
53
|
+
})
|