From 94ad31e7d4fe9ab8ec572c67f9c66f621fbe3ac0 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Sat, 2 Sep 2017 14:00:21 +0100 Subject: [PATCH] :bug: Fix at-root in space after colon --- lib/rules/space-after-colon.js | 45 ++++++++++++++++--------------- tests/rules/space-after-colon.js | 4 +-- tests/sass/space-after-colon.sass | 6 +++++ tests/sass/space-after-colon.scss | 14 ++++++++++ 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/lib/rules/space-after-colon.js b/lib/rules/space-after-colon.js index b5b4f9a8..20d39dc5 100644 --- a/lib/rules/space-after-colon.js +++ b/lib/rules/space-after-colon.js @@ -11,29 +11,30 @@ module.exports = { var result = []; ast.traverseByTypes(['propertyDelimiter', 'operator'], function (delimiter, i, parent) { - if (delimiter.content === ':') { - var next = parent.content[i + 1]; - - if (next && next.is('space')) { - if (!parser.options.include) { - result = helpers.addUnique(result, { - 'ruleId': parser.rule.name, - 'line': next.start.line, - 'column': next.start.column, - 'message': 'No space allowed after `:`', - 'severity': parser.severity - }); + if (!parent.is('atrule')) { + if (delimiter.content === ':') { + var next = parent.content[i + 1]; + if (next && next.is('space')) { + if (!parser.options.include) { + result = helpers.addUnique(result, { + 'ruleId': parser.rule.name, + 'line': next.start.line, + 'column': next.start.column, + 'message': 'No space allowed after `:`', + 'severity': parser.severity + }); + } } - } - else { - if (parser.options.include) { - result = helpers.addUnique(result, { - 'ruleId': parser.rule.name, - 'line': delimiter.start.line, - 'column': delimiter.start.column, - 'message': 'Space expected after `:`', - 'severity': parser.severity - }); + else { + if (parser.options.include) { + result = helpers.addUnique(result, { + 'ruleId': parser.rule.name, + 'line': delimiter.start.line, + 'column': delimiter.start.column, + 'message': 'Space expected after `:`', + 'severity': parser.severity + }); + } } } } diff --git a/tests/rules/space-after-colon.js b/tests/rules/space-after-colon.js index 734538b5..50576ad5 100644 --- a/tests/rules/space-after-colon.js +++ b/tests/rules/space-after-colon.js @@ -12,7 +12,7 @@ describe('space after colon - scss', function () { lint.test(file, { 'space-after-colon': 1 }, function (data) { - lint.assert.equal(3, data.warningCount); + lint.assert.equal(4, data.warningCount); done(); }); }); @@ -26,7 +26,7 @@ describe('space after colon - scss', function () { } ] }, function (data) { - lint.assert.equal(4, data.warningCount); + lint.assert.equal(6, data.warningCount); done(); }); }); diff --git a/tests/sass/space-after-colon.sass b/tests/sass/space-after-colon.sass index 302c35a7..f2485e8f 100644 --- a/tests/sass/space-after-colon.sass +++ b/tests/sass/space-after-colon.sass @@ -14,3 +14,9 @@ $qux: 'qux' $norf:'norf' + +.foo + @at-root button#{&}:hover + +.foo:hover + +test diff --git a/tests/sass/space-after-colon.scss b/tests/sass/space-after-colon.scss index 967c5949..76f8db13 100644 --- a/tests/sass/space-after-colon.scss +++ b/tests/sass/space-after-colon.scss @@ -14,3 +14,17 @@ $qux: 'qux'; $norf:'norf'; + +.foo { + @at-root button#{&}:hover { + } +} + +.foo:hover { + @include test; +} + +$map: { + test:'red', + other: blue, +}