Index: lib/src/prism/components/prism-groovy.js |
diff --git a/lib/src/prism/components/prism-groovy.js b/lib/src/prism/components/prism-groovy.js |
index 3d5890f650043a5440fb92f71056d49c313ba2a0..dfb3657390f64f0903edddfb29e727fd17f5a80e 100644 |
--- a/lib/src/prism/components/prism-groovy.js |
+++ b/lib/src/prism/components/prism-groovy.js |
@@ -1,9 +1,9 @@ |
Prism.languages.groovy = Prism.languages.extend('clike', { |
'keyword': /\b(as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/, |
'string': /("""|''')[\W\w]*?\1|("|'|\/)(?:\\?.)*?\2|(\$\/)(\$\/\$|[\W\w])*?\/\$/, |
- 'number': /\b0b[01_]+\b|\b0x[\da-f_]+(\.[\da-f_p\-]+)?\b|\b[\d_]+(\.[\d_]+[e]?[\d]*)?[glidf]\b|[\d_]+(\.[\d_]+)?\b/i, |
+ 'number': /\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i, |
'operator': { |
- pattern: /(^|[^.])(={0,2}~|\?\.|\*?\.@|\.&|\.{1,2}(?!\.)|\.{2}<?(?=\w)|->|\?:|[-+]{1,2}|!|<=>|>{1,3}|<{1,2}|={1,2}|&{1,2}|\|{1,2}|\?|\*{1,2}|\/|\^|%)/, |
+ pattern: /(^|[^.])(~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.{1,2}(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/, |
lookbehind: true |
}, |
'punctuation': /\.+|[{}[\];(),:$]/ |
@@ -27,6 +27,7 @@ Prism.languages.insertBefore('groovy', 'function', { |
} |
}); |
+// Handle string interpolation |
Prism.hooks.add('wrap', function(env) { |
if (env.language === 'groovy' && env.type === 'string') { |
var delimiter = env.content[0]; |