Commit a7064dd4cc896955590a6a7010e44acaf3faead0

Golmote 2015-06-20T20:07:37

Moved up JS strings before template strings as they are far more common

diff --git a/components/prism-javascript.js b/components/prism-javascript.js
index b29f194..f2b4054 100644
--- a/components/prism-javascript.js
+++ b/components/prism-javascript.js
@@ -11,7 +11,7 @@ Prism.languages.insertBefore('javascript', 'keyword', {
 	}
 });
 
-Prism.languages.insertBefore('javascript', 'string', {
+Prism.languages.insertBefore('javascript', 'class-name', {
 	'template-string': {
 		pattern: /`(?:\\`|\\?[^`])*`/,
 		inside: {
diff --git a/components/prism-javascript.min.js b/components/prism-javascript.min.js
index 3fa033b..3bbd703 100644
--- a/components/prism-javascript.min.js
+++ b/components/prism-javascript.min.js
@@ -1 +1 @@
-Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/(?!\d)[a-z0-9_$]+(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});
\ No newline at end of file
+Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/(?!\d)[a-z0-9_$]+(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});
\ No newline at end of file
diff --git a/examples/prism-javascript.html b/examples/prism-javascript.html
index 5bd11e3..77a63d0 100644
--- a/examples/prism-javascript.html
+++ b/examples/prism-javascript.html
@@ -81,6 +81,9 @@ multiple lines.`
 <h3>Two quotes of the same type (i.e. both single or both double) inside a regex</h3>
 <pre><code>foo = /"foo"/;</code></pre>
 
+<h3>Two quotes of the same type (i.e. both single or both double) inside string interpolation</h3>
+<pre><code>foo = `${"foo"}`;</code></pre>
+
 <h3>String interpolation containing a closing brace</h3>
 <pre><code>`${ {foo:'bar'}.foo }`
 `${ '}' }`</code></pre>
diff --git a/prism.js b/prism.js
index 332d792..7ef3b77 100644
--- a/prism.js
+++ b/prism.js
@@ -588,7 +588,7 @@ Prism.languages.insertBefore('javascript', 'keyword', {
 	}
 });
 
-Prism.languages.insertBefore('javascript', 'string', {
+Prism.languages.insertBefore('javascript', 'class-name', {
 	'template-string': {
 		pattern: /`(?:\\`|\\?[^`])*`/,
 		inside: {