summaryrefslogtreecommitdiff
path: root/pygments/lexers/jvm.py
diff options
context:
space:
mode:
authorTim Hatch <tim@timhatch.com>2014-10-07 13:00:01 -0700
committerTim Hatch <tim@timhatch.com>2014-10-07 13:00:01 -0700
commit6da701e9ee6865df608a332e03b58c03d5db89b2 (patch)
tree2dea11e86a0477a2bea7a4381efa1b370a2fda5f /pygments/lexers/jvm.py
parentf70bf51ec7d50aadaafa668d482619ed88b72618 (diff)
downloadpygments-6da701e9ee6865df608a332e03b58c03d5db89b2.tar.gz
ScalaLexer: Improve interpolated strings, adding triplequoted strings and test file.
Diffstat (limited to 'pygments/lexers/jvm.py')
-rw-r--r--pygments/lexers/jvm.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py
index c5fe49f6..86a45d1e 100644
--- a/pygments/lexers/jvm.py
+++ b/pygments/lexers/jvm.py
@@ -244,6 +244,7 @@ class ScalaLexer(RegexLexer):
u'\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\uff21-\uff3a]')
idrest = u'%s(?:%s|[0-9])*(?:(?<=_)%s)?' % (letter, letter, op)
+ letter_letter_digit = u'%s(?:%s|\d)*' % (letter, letter)
tokens = {
'root': [
@@ -268,6 +269,7 @@ class ScalaLexer(RegexLexer):
(r'""".*?"""(?!")', String),
(r'"(\\\\|\\"|[^"])*"', String),
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
+ (r'[fs]"""', String, 'interptriplestring'), # interpolated strings
(r'[fs]"', String, 'interpstring'), # interpolated strings
(r'raw"(\\\\|\\"|[^"])*"', String), # raw strings
# (ur'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
@@ -322,18 +324,27 @@ class ScalaLexer(RegexLexer):
'import': [
(u'(%s|\\.)+' % idrest, Name.Namespace, '#pop')
],
- 'interpstring': [
- (r'[^"$\\]', String),
- (r'\$\{', String.Interpol, 'interpbrace'),
+ 'interpstringcommon': [
+ (r'[^"$\\]+', String),
(r'\$\$', String),
+ (r'\$' + letter_letter_digit, String.Interpol),
+ (r'\$\{', String.Interpol, 'interpbrace'),
(r'\\.', String),
+ ],
+ 'interptriplestring': [
+ (r'"""(?!")', String, '#pop'),
+ (r'"', String),
+ include('interpstringcommon'),
+ ],
+ 'interpstring': [
(r'"', String, '#pop'),
+ include('interpstringcommon'),
],
'interpbrace': [
(r'\}', String.Interpol, '#pop'),
(r'\{', String.Interpol, '#push'),
include('root'),
- ]
+ ],
}