Skip to content

Commit

Permalink
Support single colon in css/scss/less/stylus when using pseudo elemen…
Browse files Browse the repository at this point in the history
…t selector

Fixes highlightjs#3240
  • Loading branch information
Zsolt Lengyel committed Oct 12, 2021
1 parent 1a258a3 commit e3dc9d6
Show file tree
Hide file tree
Showing 12 changed files with 20 additions and 6 deletions.
2 changes: 2 additions & 0 deletions CHANGES.md
Expand Up @@ -34,6 +34,7 @@ Grammars:
- enh(scala) add `using` soft keyword (#3330) [Nicolas Stucki][]
- enh(fsharp) added `f#` alias (#3337) [Bahnschrift][]
- enh(bash) added gnu core utilities (#3342) [katzeprior][]
- fix(css/less/stylus/scss) highlight single-colon psuedo-elements properly (#3240) [zsoltlengyelit][]

[Austin Schick]: https://github.com/austin-schick
[Josh Goebel]: https://github.com/joshgoebel
Expand All @@ -44,6 +45,7 @@ Grammars:
[Bahnschrift]: https://github.com/Bahnschrift
[Melvyn Laïly]: https://github.com/mlaily
[katzeprior]: https://github.com/katzeprior
[zsoltlengyelit]: github.com/zsoltlengyelit


## Version 11.2.0
Expand Down
2 changes: 1 addition & 1 deletion src/languages/css.js
Expand Up @@ -58,7 +58,7 @@ export default function(hljs) {
begin: ':(' + css.PSEUDO_CLASSES.join('|') + ')'
},
{
begin: '::(' + css.PSEUDO_ELEMENTS.join('|') + ')'
begin: ':(:)?(' + css.PSEUDO_ELEMENTS.join('|') + ')'
}
]
},
Expand Down
2 changes: 1 addition & 1 deletion src/languages/less.js
Expand Up @@ -199,7 +199,7 @@ export default function(hljs) {
},
{
className: 'selector-pseudo',
begin: '::(' + css.PSEUDO_ELEMENTS.join('|') + ')'
begin: ':(:)?(' + css.PSEUDO_ELEMENTS.join('|') + ')'
},
{
begin: /\(/,
Expand Down
2 changes: 1 addition & 1 deletion src/languages/scss.js
Expand Up @@ -55,7 +55,7 @@ export default function(hljs) {
},
{
className: 'selector-pseudo',
begin: '::(' + PSEUDO_ELEMENTS.join('|') + ')'
begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')'
},
VARIABLE,
{ // pseudo-selector params
Expand Down
2 changes: 1 addition & 1 deletion src/languages/stylus.js
Expand Up @@ -96,7 +96,7 @@ export default function(hljs) {
},
{
className: 'selector-pseudo',
begin: '&?::(' + css.PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END
begin: '&?:(:)?(' + css.PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END
},

modes.ATTRIBUTE_SELECTOR_MODE,
Expand Down
4 changes: 2 additions & 2 deletions test/markup/css/pseudo.expect.txt
@@ -1,5 +1,5 @@
<span class="hljs-selector-class">.test</span>:before,
.test:after {
<span class="hljs-selector-class">.test</span><span class="hljs-selector-pseudo">:before</span>,
<span class="hljs-selector-class">.test</span><span class="hljs-selector-pseudo">:after</span> {
<span class="hljs-attribute">color</span>: pink;
<span class="hljs-attribute">color</span>: red;
}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/less/css_consistency.expect.txt
Expand Up @@ -22,7 +22,9 @@

<span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:visited</span> { <span class="hljs-attribute">color</span>: blue; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">span</span><span class="hljs-selector-pseudo">:nth-child</span>(<span class="hljs-number">33</span>) { <span class="hljs-attribute">color</span>:red; }

<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:lang</span>(en) {}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/less/css_consistency.txt
Expand Up @@ -22,7 +22,9 @@ h1, h2, figcaption, aside, main, form, footer {}

a:visited { color: blue; }
div::after { content: "test"; }
div:after { content: "test"; }
div::before { content: open-quote; }
div:before { content: open-quote; }
span:nth-child(33) { color:red; }

p:lang(en) {}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/scss/css_consistency.expect.txt
Expand Up @@ -22,7 +22,9 @@

<span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:visited</span> { <span class="hljs-attribute">color</span>: blue; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">span</span><span class="hljs-selector-pseudo">:nth-child</span>(<span class="hljs-number">33</span>) { <span class="hljs-attribute">color</span>:red; }

<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:lang</span>(en) {}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/scss/css_consistency.txt
Expand Up @@ -22,7 +22,9 @@ h1, h2, figcaption, aside, main, form, footer {}

a:visited { color: blue; }
div::after { content: "test"; }
div:after { content: "test"; }
div::before { content: open-quote; }
div:before { content: open-quote; }
span:nth-child(33) { color:red; }

p:lang(en) {}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/stylus/css_consistency.expect.txt
Expand Up @@ -22,7 +22,9 @@

<span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:visited</span> { <span class="hljs-attribute">color</span>: blue; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:after</span> { <span class="hljs-attribute">content</span>: <span class="hljs-string">&quot;test&quot;</span>; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">::before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">div</span><span class="hljs-selector-pseudo">:before</span> { <span class="hljs-attribute">content</span>: open-quote; }
<span class="hljs-selector-tag">span</span><span class="hljs-selector-pseudo">:nth-child</span>(<span class="hljs-number">33</span>) { <span class="hljs-attribute">color</span>:red; }

<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:lang</span>(en) {}
Expand Down
2 changes: 2 additions & 0 deletions test/markup/stylus/css_consistency.txt
Expand Up @@ -22,7 +22,9 @@ h1, h2, figcaption, aside, main, form, footer {}

a:visited { color: blue; }
div::after { content: "test"; }
div:after { content: "test"; }
div::before { content: open-quote; }
div:before { content: open-quote; }
span:nth-child(33) { color:red; }

p:lang(en) {}
Expand Down

0 comments on commit e3dc9d6

Please sign in to comment.