diff --git a/lib/rules/block-opening-brace-space-before/README.md b/lib/rules/block-opening-brace-space-before/README.md index b4febe5201..b637275141 100644 --- a/lib/rules/block-opening-brace-space-before/README.md +++ b/lib/rules/block-opening-brace-space-before/README.md @@ -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: + + +```css +:root +{} +``` + + +```css +:root{} +``` diff --git a/lib/rules/block-opening-brace-space-before/__tests__/index.js b/lib/rules/block-opening-brace-space-before/__tests__/index.js index 4102ae90a1..5df15bb104 100644 --- a/lib/rules/block-opening-brace-space-before/__tests__/index.js +++ b/lib/rules/block-opening-brace-space-before/__tests__/index.js @@ -81,7 +81,7 @@ testRule({ testRule({ ruleName, - config: ['always', { ignoreAtRules: ['for'] }], + config: ['always', { ignoreAtRules: ['for', '/fo/', /fo/] }], fix: true, accept: [ @@ -109,53 +109,28 @@ testRule({ testRule({ ruleName, - config: ['always', { ignoreAtRules: '/fo/' }], + config: ['always', { ignoreSelectors: ['a', '/a/', /a/] }], 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, - }, - ], -}); - -testRule({ - ruleName, - config: ['always', { ignoreAtRules: /fo/ }], - fix: true, - - accept: [ - { - code: 'a { color: pink; }', }, { - code: '@for ...\n{ color: pink; }', + code: 'a\n{ color: pink; }', }, { - code: '@for ...\r\n{ color: pink; }', + code: 'a\r\n{ color: pink; }', }, ], reject: [ { - code: 'a{ color: pink; }', - fixed: 'a { color: pink; }', + code: 'b{ color: pink; }', + fixed: 'b { color: pink; }', message: messages.expectedBefore(), line: 1, column: 1, diff --git a/lib/rules/block-opening-brace-space-before/index.js b/lib/rules/block-opening-brace-space-before/index.js index 357d7d5b79..f4d6a63cea 100644 --- a/lib/rules/block-opening-brace-space-before/index.js +++ b/lib/rules/block-opening-brace-space-before/index.js @@ -46,6 +46,7 @@ function rule(expectation, options, context) { actual: options, possible: { ignoreAtRules: [_.isString, _.isRegExp], + ignoreSelectors: [_.isString, _.isRegExp], }, optional: true, }, @@ -70,6 +71,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,