Skip to content

Commit

Permalink
Add ignoreSelectors option to block-opening-brace-space-before
Browse files Browse the repository at this point in the history
  • Loading branch information
charlessuh committed Mar 5, 2020
1 parent 0254e50 commit 9c33536
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 78 deletions.
21 changes: 21 additions & 0 deletions lib/rules/block-opening-brace-space-before/README.md
Expand Up @@ -195,3 +195,24 @@ The following patterns are _not_ considered violations:
```css
@for ...{}
```

### `ignoreSelectors: ["/regex/", /regex/, "non-regex"]`

Given:

```
[":root"]
```

The following patterns are _not_ considered violations:

<!-- prettier-ignore -->
```css
:root
{}
```

<!-- prettier-ignore -->
```css
:root{}
```
170 changes: 92 additions & 78 deletions lib/rules/block-opening-brace-space-before/__tests__/index.js
Expand Up @@ -80,89 +80,103 @@ testRule(rule, {
],
});

testRule(rule, {
ruleName,
config: ['always', { ignoreAtRules: ['for'] }],
fix: true,
for (const selector of ['for', '/fo/', /fo/]) {
testRule(rule, {
ruleName,
config: ['always', { ignoreAtRules: [selector] }],
fix: true,

accept: [
{
code: 'a { color: pink; }',
},
{
code: '@for ...\n{ color: pink; }',
},
{
code: '@for ...\r\n{ color: pink; }',
},
],
accept: [
{
code: 'a { color: pink; }',
},
{
code: '@for ...\n{ color: pink; }',
},
{
code: '@for ...\r\n{ color: pink; }',
},
],

reject: [
{
code: 'a{ color: pink; }',
fixed: 'a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 1,
},
],
});
reject: [
{
code: 'a{ color: pink; }',
fixed: 'a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 1,
},
],
});
}

testRule(rule, {
ruleName,
config: ['always', { ignoreAtRules: '/fo/' }],
fix: true,
for (const selector of ['a', '/a/', /a/]) {
testRule(rule, {
ruleName,
config: ['always', { ignoreSelectors: [selector] }],
fix: true,

accept: [
{
code: 'a { color: pink; }',
},
{
code: '@for ...\n{ color: pink; }',
},
{
code: '@for ...\r\n{ color: pink; }',
},
],
accept: [
{
code: 'a { color: pink; }',
},
{
code: 'a{ color: pink; }',
},
{
code: 'a\n{ color: pink; }',
},
{
code: 'a\r\n{ color: pink; }',
},
],

reject: [
{
code: 'a{ color: pink; }',
fixed: 'a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 1,
},
],
});

testRule(rule, {
ruleName,
config: ['always', { ignoreAtRules: /fo/ }],
fix: true,

accept: [
{
code: 'a { color: pink; }',
},
{
code: '@for ...\n{ color: pink; }',
},
{
code: '@for ...\r\n{ color: pink; }',
},
],

reject: [
{
code: 'a{ color: pink; }',
fixed: 'a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 1,
},
],
});
reject: [
{
code: 'b{ color: pink; }',
fixed: 'b { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 1,
},
{
code: 'b\n{ color: pink; }',
fixed: 'b { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 2,
},
{
code: 'b\r\n{ color: pink; }',
fixed: 'b { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 2,
},
{
code: '@a{ color: pink; }',
fixed: '@a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 2,
},
{
code: '@a\n{ color: pink; }',
fixed: '@a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 3,
},
{
code: '@a\r\n{ color: pink; }',
fixed: '@a { color: pink; }',
message: messages.expectedBefore(),
line: 1,
column: 3,
},
],
});
}

testRule(rule, {
ruleName,
Expand Down
6 changes: 6 additions & 0 deletions lib/rules/block-opening-brace-space-before/index.js
Expand Up @@ -44,6 +44,7 @@ function rule(expectation, options, context) {
actual: options,
possible: {
ignoreAtRules: [_.isString, _.isRegExp],
ignoreSelectors: [_.isString, _.isRegExp],
},
optional: true,
},
Expand All @@ -68,6 +69,11 @@ function rule(expectation, options, context) {
return;
}

// Return early if selector is to be ignored
if (optionsMatches(options, 'ignoreSelectors', statement.selector)) {
return;
}

const source = beforeBlockString(statement);
const beforeBraceNoRaw = beforeBlockString(statement, {
noRawBefore: true,
Expand Down

0 comments on commit 9c33536

Please sign in to comment.