From 9d8ee5a0e924a9c14a1f66531d8d114d211d0055 Mon Sep 17 00:00:00 2001 From: Charles Suh Date: Sat, 29 Feb 2020 21:13:37 -0800 Subject: [PATCH] Add ignoreSelectors option to block-opening-brace-space-before --- .../README.md | 21 +++++++++++ .../__tests__/index.js | 37 +++---------------- .../block-opening-brace-space-before/index.js | 6 +++ 3 files changed, 33 insertions(+), 31 deletions(-) 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 16aac542e9..3bfb7f38b9 100644 --- a/lib/rules/block-opening-brace-space-before/__tests__/index.js +++ b/lib/rules/block-opening-brace-space-before/__tests__/index.js @@ -82,7 +82,7 @@ testRule(rule, { testRule(rule, { ruleName, - config: ['always', { ignoreAtRules: ['for'] }], + config: ['always', { ignoreAtRules: ['for', '/fo/', /fo/] }], fix: true, accept: [ @@ -110,53 +110,28 @@ testRule(rule, { testRule(rule, { 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(rule, { - 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 0097fc9f19..9977dc023f 100644 --- a/lib/rules/block-opening-brace-space-before/index.js +++ b/lib/rules/block-opening-brace-space-before/index.js @@ -44,6 +44,7 @@ function rule(expectation, options, context) { actual: options, possible: { ignoreAtRules: [_.isString, _.isRegExp], + ignoreSelectors: [_.isString, _.isRegExp], }, optional: true, }, @@ -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,