diff options
author | Tim Hatch <tim@timhatch.com> | 2014-10-07 13:00:38 -0700 |
---|---|---|
committer | Tim Hatch <tim@timhatch.com> | 2014-10-07 13:00:38 -0700 |
commit | 209fbc57cadc9111ba0a4b223e83867659c12c07 (patch) | |
tree | f91f6bbf1c2e59aabad4a23bc96679761d7e85dc | |
parent | 9c0ad332a8d47c40231f04305f33740d4a690bc3 (diff) | |
parent | 6da701e9ee6865df608a332e03b58c03d5db89b2 (diff) | |
download | pygments-209fbc57cadc9111ba0a4b223e83867659c12c07.tar.gz |
Merge with -main
-rw-r--r-- | pygments/lexers/jvm.py | 19 | ||||
-rw-r--r-- | tests/examplefiles/interp.scala | 10 |
2 files changed, 25 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'), - ] + ], } diff --git a/tests/examplefiles/interp.scala b/tests/examplefiles/interp.scala new file mode 100644 index 00000000..4131b75e --- /dev/null +++ b/tests/examplefiles/interp.scala @@ -0,0 +1,10 @@ +val n = 123; +val a = s"n=$n"; +val a2 = s"n=$n''"; +val b = s"""n=$n"""; +val c = f"n=$n%f"; +val d = f"""n=$n%f"""; +val d2 = s"""a""""; +val e = s"abc\u00e9"; +val f = s"a${n}b"; +val g = s"a${n + 1}b"; |