Skip to content

Commit 4a1b32d

Browse files
committed
Fix regressions in stylelint.
1 parent c8b8cdf commit 4a1b32d

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

src/__tests__/exceptions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ throws('bad syntax', '-moz-osx-font-smoothing: grayscale');
2323
throws('missing backslash for semicolon', '.;');
2424
throws('missing backslash for semicolon', '.\;');
2525
throws('unexpected / foo', '-Option\/root', "Unexpected '/'. Escaping special characters with \\ may help.");
26+
throws('bang in selector', '.foo !optional', "Unexpected '!'. Escaping special characters with \\ may help.");

src/__tests__/nonstandard.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,18 @@ test('leading combinator', '> *', (t, tree) => {
1818
t.deepEqual(tree.nodes[0].nodes[0].value, '>');
1919
t.deepEqual(tree.nodes[0].nodes[1].value, '*');
2020
});
21+
22+
test('sass escapes', '.#{$classname}', (t, tree) => {
23+
t.deepEqual(tree.nodes[0].nodes.map(n => n.type), ["class"]);
24+
t.deepEqual(tree.nodes[0].nodes[0].value, "#{$classname}");
25+
});
26+
27+
test('sass escapes', '[lang=#{$locale}]', (t, tree) => {
28+
t.deepEqual(tree.nodes[0].nodes.map(n => n.type), ["attribute"]);
29+
t.deepEqual(tree.nodes[0].nodes[0].value, "#{$locale}");
30+
});
31+
32+
test('placeholder', '%foo', (t, tree) => {
33+
t.deepEqual(tree.nodes[0].nodes.map(n => n.type), ["tag"]);
34+
t.deepEqual(tree.nodes[0].nodes[0].value, "%foo");
35+
});

src/parser.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,15 @@ export default class Parser {
227227
spaceAfterMeaningfulToken = false;
228228
break;
229229
case tokens.dollar:
230+
if (lastAdded === "value") {
231+
let oldRawValue = getProp(node, 'raws', 'value');
232+
node.value += "$";
233+
if (oldRawValue) {
234+
node.raws.value = oldRawValue + "$";
235+
}
236+
break;
237+
}
238+
// Falls through
230239
case tokens.caret:
231240
if (next[TOKEN.TYPE] === tokens.equals) {
232241
node.operator = content;

src/tokenize.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ export default function tokenize (input) {
195195
// Consume these characters as single tokens.
196196
case t.asterisk:
197197
case t.ampersand:
198+
case t.bang:
198199
case t.comma:
199200
case t.equals:
200201
case t.dollar:

0 commit comments

Comments
 (0)