diff options
-rw-r--r-- | pygments/lexers/agile.py | 13 | ||||
-rw-r--r-- | tests/examplefiles/ruby_func_def.rb | 11 |
2 files changed, 22 insertions, 2 deletions
diff --git a/pygments/lexers/agile.py b/pygments/lexers/agile.py index 798d6f8c..a7f428c0 100644 --- a/pygments/lexers/agile.py +++ b/pygments/lexers/agile.py @@ -535,14 +535,23 @@ class RubyLexer(ExtendedRegexLexer): (r'\s+', Text) ], 'funcname': [ + (r'\(', Punctuation, 'defexpr'), (r'(?:([a-zA-Z_][a-zA-Z0-9_]*)(\.))?' r'([a-zA-Z_][\w_]*[\!\?]?|\*\*?|[-+]@?|' r'[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)', - bygroups(Name.Class, Operator, Name.Function), '#pop') + bygroups(Name.Class, Operator, Name.Function), '#pop'), + (r'(?:)', Text, '#pop') ], 'classname': [ + (r'\(', Punctuation, 'defexpr'), (r'<<', Operator, '#pop'), - (r'[a-zA-Z_][\w_]*', Name.Class, '#pop') + (r'[A-Z_][\w_]*', Name.Class, '#pop'), + (r'(?:)', Text, '#pop') + ], + 'defexpr': [ + (r'(\))(\.|::)?', bygroups(Punctuation, Operator), '#pop'), + (r'\(', Operator, '#push'), + include('root') ], 'in-intp': [ ('}', String.Interpol, '#pop'), diff --git a/tests/examplefiles/ruby_func_def.rb b/tests/examplefiles/ruby_func_def.rb new file mode 100644 index 00000000..a820c68f --- /dev/null +++ b/tests/examplefiles/ruby_func_def.rb @@ -0,0 +1,11 @@ +class (get_foo("blub"))::Foo + def (foo("bar") + bar("baz")).something argh, aaahaa + 42 + end +end + +class get_the_fuck("out")::Of::My + def parser_definition + ruby! + end +end |