diff options
author | Tim Hatch <tim@timhatch.com> | 2014-10-06 19:09:35 -0700 |
---|---|---|
committer | Tim Hatch <tim@timhatch.com> | 2014-10-06 19:09:35 -0700 |
commit | 5bbc0d44482b05c9467b737c4e217d5501203fc7 (patch) | |
tree | 063257d42ae2d289f7efb03b2ca022e5c9b1c3b3 | |
parent | 8182f8ecafd849532737331f5b71ed099521f729 (diff) | |
download | pygments-5bbc0d44482b05c9467b737c4e217d5501203fc7.tar.gz |
Correct accidental punctuation range in RubyLexer.
Fixes #1006
-rw-r--r-- | pygments/lexers/ruby.py | 2 | ||||
-rw-r--r-- | tests/test_ruby.py | 52 |
2 files changed, 53 insertions, 1 deletions
diff --git a/pygments/lexers/ruby.py b/pygments/lexers/ruby.py index eadb670d..e9973eea 100644 --- a/pygments/lexers/ruby.py +++ b/pygments/lexers/ruby.py @@ -306,7 +306,7 @@ class RubyLexer(ExtendedRegexLexer): (r'[A-Z]\w+', Name.Constant), # this is needed because ruby attributes can look # like keywords (class) or like this: ` ?!? - (r'(\.|::)([a-zA-Z_]\w*[\!\?]?|[*%&^`~+-/\[<>=])', + (r'(\.|::)([a-zA-Z_]\w*[\!\?]?|[*%&^`~+\-/\[<>=])', bygroups(Operator, Name)), (r'[a-zA-Z_]\w*[\!\?]?', Name), (r'(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|' diff --git a/tests/test_ruby.py b/tests/test_ruby.py new file mode 100644 index 00000000..8f719d10 --- /dev/null +++ b/tests/test_ruby.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +""" + Basic RubyLexer Test + ~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import unittest + +from pygments.token import Operator, Number, Text +from pygments.lexers import RubyLexer + + +class RubyTest(unittest.TestCase): + + def setUp(self): + self.lexer = RubyLexer() + + def testRangeSyntax1(self): + fragment = u'1..3\n' + tokens = [ + (Number.Integer, u'1'), + (Operator, u'..'), + (Number.Integer, u'3'), + (Text, u'\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + + def testRangeSyntax2(self): + fragment = u'1...3\n' + tokens = [ + (Number.Integer, u'1'), + (Operator, u'...'), + (Number.Integer, u'3'), + (Text, u'\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + + def testRangeSyntax3(self): + fragment = u'1 .. 3\n' + tokens = [ + (Number.Integer, u'1'), + (Text, u' '), + (Operator, u'..'), + (Text, u' '), + (Number.Integer, u'3'), + (Text, u'\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + |