diff options
author | Jessie Wincek <jbwincek@gmail.com> | 2016-06-02 17:25:18 -0700 |
---|---|---|
committer | Jessie Wincek <jbwincek@gmail.com> | 2016-06-02 17:25:18 -0700 |
commit | 01ef42a515f79f607b3c5228fbb945bb38d103ac (patch) | |
tree | 4efc1a6360e6cf2d12aee748af3e3bc8311a1808 | |
parent | e29c89f4bcb5a8d16f327e3d40dcfaa86e46563b (diff) | |
download | pygments-01ef42a515f79f607b3c5228fbb945bb38d103ac.tar.gz |
Added space as a valid delimiter between key and value. Added tests for \ escaped spaces in keys and values.
-rw-r--r-- | pygments/lexers/configs.py | 1 | ||||
-rw-r--r-- | tests/test_properties.py | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/pygments/lexers/configs.py b/pygments/lexers/configs.py index 0633af27..4854e59f 100644 --- a/pygments/lexers/configs.py +++ b/pygments/lexers/configs.py @@ -112,6 +112,7 @@ class PropertiesLexer(RegexLexer): tokens = { 'root': [ + (r'^(\w+)([ \t])(\w+\s*)$', bygroups(Name.Attribute, Text, String)), (r'(^ *)([#!].*)', bygroups(Text, Comment)), (r'(.*?)([ \t]*)([=:])([ \t]*)(.*(?:(?<=\\)\n.*)*)', bygroups(Name.Attribute, Text, Operator, Text, String)), diff --git a/tests/test_properties.py b/tests/test_properties.py index 657f8a3f..f86c0348 100644 --- a/tests/test_properties.py +++ b/tests/test_properties.py @@ -38,3 +38,36 @@ class PropertiesTest(unittest.TestCase): (Token.Text, '\n'), ] self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + + def test_escaped_space_in_key(self): + fragment = 'key = value\n' + tokens = [ + (Token.Name.Attribute, 'key'), + (Token.Text, ' '), + (Token.Operator, '='), + (Token.Text, ' '), + (Token.Literal.String, 'value'), + (Token.Text, '\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + + def test_escaped_space_in_value(self): + fragment = 'key = doubleword\\ value\n' + tokens = [ + (Token.Name.Attribute, 'key'), + (Token.Text, ' '), + (Token.Operator, '='), + (Token.Text, ' '), + (Token.Literal.String, 'doubleword\\ value'), + (Token.Text, '\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) + + def testNeedsName(self): + fragment = 'key value\n' + tokens = [ + (Token.Name.Attribute, 'key'), + (Token.Text, ' '), + (Token.Literal.String, 'value\n'), + ] + self.assertEqual(tokens, list(self.lexer.get_tokens(fragment))) |