Updated selector patterns
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
diff --git a/components/prism-css-extras.js b/components/prism-css-extras.js
index 046e161..457f889 100644
--- a/components/prism-css-extras.js
+++ b/components/prism-css-extras.js
@@ -1,14 +1,16 @@
Prism.languages.css.selector = {
- pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/ig,
+ pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/g,
inside: {
- 'pseudo': /::?[-a-z0-9\(\)+-]+/ig,
- 'selector-class': /\.[-a-z0-9_:\.]+/ig,
- 'selector-id': /#[-a-z0-9_:\.]+/ig
+ 'pseudo-element': /::?(after|before|first-letter|first-line|selection)/g,
+ 'pseudo-class': /:[-\w]+(\(.*\))?/g,
+ 'selector-class': /\.[-:\.\w]+/g,
+ 'selector-id': /#[-:\.\w]+/g
}
};
Prism.languages.insertBefore('css', 'ignore', {
'hexcode': /#[0-9a-f]{3,6}/gi,
+ 'entity': /\\[\da-f]{1,8}/gi,
'number': /[0-9%\.]+/g,
'function': /(attr|calc|cross-fade|cycle|element|hsl|hsla|image|lang|linear-gradient|matrix|matrix3d|perspective|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|rgb|rgba|rotate|rotatex|rotatey|rotatez|rotate3d|scale|scalex|scaley|scalez|scale3d|skew|skewx|skewy|steps|translate|translatex|translatey|translatez|translate3d|url|var)/ig
});
\ No newline at end of file
diff --git a/components/prism-css-extras.min.js b/components/prism-css-extras.min.js
index 1fffa51..5345cad 100644
--- a/components/prism-css-extras.min.js
+++ b/components/prism-css-extras.min.js
@@ -1 +1 @@
-Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/ig,inside:{pseudo:/::?[-a-z0-9\(\)+-]+/ig,"selector-class":/\.[-a-z0-9_:\.]+/ig,"selector-id":/#[-a-z0-9_:\.]+/ig}};Prism.languages.insertBefore("css","ignore",{hexcode:/#[0-9a-f]{3,6}/gi,number:/[0-9%\.]+/g,"function":/(attr|calc|cross-fade|cycle|element|hsl|hsla|image|lang|linear-gradient|matrix|matrix3d|perspective|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|rgb|rgba|rotate|rotatex|rotatey|rotatez|rotate3d|scale|scalex|scaley|scalez|scale3d|skew|skewx|skewy|steps|translate|translatex|translatey|translatez|translate3d|url|var)/ig});
\ No newline at end of file
+Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/g,inside:{"pseudo-element":/::?(after|before|first-letter|first-line|selection)/g,"pseudo-class":/:[-\w]+(\(.*\))?/g,"selector-class":/\.[-:\.\w]+/g,"selector-id":/#[-:\.\w]+/g}};Prism.languages.insertBefore("css","ignore",{hexcode:/#[0-9a-f]{3,6}/gi,entity:/\\[\da-f]{1,8}/gi,number:/[0-9%\.]+/g,"function":/(attr|calc|cross-fade|cycle|element|hsl|hsla|image|lang|linear-gradient|matrix|matrix3d|perspective|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|rgb|rgba|rotate|rotatex|rotatey|rotatez|rotate3d|scale|scalex|scaley|scalez|scale3d|skew|skewx|skewy|steps|translate|translatex|translatey|translatez|translate3d|url|var)/ig});
\ No newline at end of file
diff --git a/examples.html b/examples.html
index cb9b318..10bba5f 100644
--- a/examples.html
+++ b/examples.html
@@ -168,11 +168,11 @@ ol {}</code></pre>
background: url("data:image/png;base64,SOMEFAKEHASH");
}
- .class:nth-child(even) {
+ .class:nth-child(2n+1) {
font: normal 12px/100% Verdana, Arial, sans-serif;
}
- #id:after {
+ #id::after {
content: attr(title);
}
}</code></pre>
diff --git a/prism.js b/prism.js
index 0c11da7..755e306 100644
--- a/prism.js
+++ b/prism.js
@@ -432,16 +432,18 @@ if (Prism.languages.markup) {
}
Prism.languages.css.selector = {
- pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/ig,
+ pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/g,
inside: {
- 'pseudo': /::?[-a-z0-9\(\)+-]+/ig,
- 'selector-class': /\.[-a-z0-9_:\.]+/ig,
- 'selector-id': /#[-a-z0-9_:\.]+/ig
+ 'pseudo-element': /::?(after|before|first-letter|first-line|selection)/g,
+ 'pseudo-class': /:[-\w]+(\(.*\))?/g,
+ 'selector-class': /\.[-:\.\w]+/g,
+ 'selector-id': /#[-:\.\w]+/g
}
};
Prism.languages.insertBefore('css', 'ignore', {
'hexcode': /#[0-9a-f]{3,6}/gi,
+ 'entity': /\\[\da-f]{1,8}/gi,
'number': /[0-9%\.]+/g,
'function': /(attr|calc|cross-fade|cycle|element|hsl|hsla|image|lang|linear-gradient|matrix|matrix3d|perspective|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|rgb|rgba|rotate|rotatex|rotatey|rotatez|rotate3d|scale|scalex|scaley|scalez|scale3d|skew|skewx|skewy|steps|translate|translatex|translatey|translatez|translate3d|url|var)/ig
});