Commit 1318f799dd766e7605f528680a5576efe7402776

Miles Johnson 2013-05-17T17:03:49

Improved selector patterns

diff --git a/components/prism-css-extras.js b/components/prism-css-extras.js
index 3baa7ef..046e161 100644
--- a/components/prism-css-extras.js
+++ b/components/prism-css-extras.js
@@ -1,14 +1,13 @@
 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
+		'pseudo': /::?[-a-z0-9\(\)+-]+/ig,
+		'selector-class': /\.[-a-z0-9_:\.]+/ig,
+		'selector-id': /#[-a-z0-9_:\.]+/ig
 	}
 };
 
 Prism.languages.insertBefore('css', 'ignore', {
-	'pseudo': /::?[-a-z0-9]+/g,
 	'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
diff --git a/components/prism-css-extras.min.js b/components/prism-css-extras.min.js
index 6e8204a..1fffa51 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",{pseudo:/::?[-a-z0-9]+/g,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*\{)/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
diff --git a/examples.html b/examples.html
index d993166..cb9b318 100644
--- a/examples.html
+++ b/examples.html
@@ -168,7 +168,11 @@ ol {}</code></pre>
 		background: url("data:image/png;base64,SOMEFAKEHASH");
 	}
 
-	div:after {
+	.class:nth-child(even) {
+		font: normal 12px/100% Verdana, Arial, sans-serif;
+	}
+
+	#id:after {
 		content: attr(title);
 	}
 }</code></pre>
diff --git a/prism.js b/prism.js
index a58b3e6..0c11da7 100644
--- a/prism.js
+++ b/prism.js
@@ -432,15 +432,16 @@ if (Prism.languages.markup) {
 }
 
 Prism.languages.css.selector = {
-	pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/g,
+	pattern: /[^\{\}\s][^\{\}]*(?=\s*\{)/ig,
 	inside: {
-		'pseudo': /::?[-a-z0-9]+/g
+		'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,
-	'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
 });