Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1ee61b0

Browse files
mdjermanovicilyavolodin
authored andcommitted
Update: enforceForClassMembers computed-property-spacing (fixes#12049) (#12214)
1 parent520c922 commit1ee61b0

File tree

3 files changed

+508
-4
lines changed

3 files changed

+508
-4
lines changed

‎docs/rules/computed-property-spacing.md‎

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,17 @@ This rule does not apply to brackets that are separated from the adjacent value
2525

2626
##Options
2727

28-
This rule has a string option:
28+
This rule has two options, a string option and an object option.
29+
30+
String option:
2931

3032
*`"never"` (default) disallows spaces inside computed property brackets
3133
*`"always"` requires one or more spaces inside computed property brackets
3234

35+
Object option:
36+
37+
*`"enforceForClassMembers": true` additionally applies this rule to class members (default is`false`)
38+
3339
###never
3440

3541
Examples of**incorrect** code for this rule with the default`"never"` option:
@@ -84,6 +90,53 @@ var x = {[ b ]: a}
8490
obj[ foo[ bar ] ]
8591
```
8692

93+
####enforceForClassMembers
94+
95+
By default, this rule does not check class declarations and class expressions,
96+
as the default value for`enforceForClassMembers` is`false`.
97+
98+
When`enforceForClassMembers` is set to`true`, the rule will also disallow/enforce spaces inside of
99+
computed keys of class methods, getters and setters.
100+
101+
Examples of**incorrect** code for this rule with`"never"` and`{ "enforceForClassMembers": true }`:
102+
103+
```js
104+
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
105+
/*eslint-env es6*/
106+
107+
classFoo {
108+
[a ]() {}
109+
get [b ]() {}
110+
set [b ](value) {}
111+
}
112+
113+
constBar=class {
114+
[a](){}
115+
static [b]() {}
116+
staticget [c ]() {}
117+
staticset [c ](value) {}
118+
}
119+
```
120+
121+
Examples of**correct** code for this rule with`"never"` and`{ "enforceForClassMembers": true }`:
122+
123+
```js
124+
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
125+
/*eslint-env es6*/
126+
127+
classFoo {
128+
[a]() {}
129+
get [b]() {}
130+
set [b](value) {}
131+
}
132+
133+
constBar=class {
134+
[a](){}
135+
static [b]() {}
136+
staticget [c]() {}
137+
staticset [c](value) {}
138+
}
139+
```
87140

88141
##When Not To Use It
89142

‎lib/rules/computed-property-spacing.js‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ module.exports = {
2626
schema:[
2727
{
2828
enum:["always","never"]
29+
},
30+
{
31+
type:"object",
32+
properties:{
33+
enforceForClassMembers:{
34+
type:"boolean",
35+
default:false
36+
}
37+
},
38+
additionalProperties:false
2939
}
3040
],
3141

@@ -41,6 +51,7 @@ module.exports = {
4151
create(context){
4252
constsourceCode=context.getSourceCode();
4353
constpropertyNameMustBeSpaced=context.options[0]==="always";// default is "never"
54+
constenforceForClassMembers=context.options[1]&&context.options[1].enforceForClassMembers;
4455

4556
//--------------------------------------------------------------------------
4657
// Helpers
@@ -178,10 +189,16 @@ module.exports = {
178189
// Public
179190
//--------------------------------------------------------------------------
180191

181-
return{
192+
constlisteners={
182193
Property:checkSpacing("key"),
183194
MemberExpression:checkSpacing("property")
184195
};
185196

197+
if(enforceForClassMembers){
198+
listeners.MethodDefinition=checkSpacing("key");
199+
}
200+
201+
returnlisteners;
202+
186203
}
187204
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp