summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJessie Wincek <jbwincek@gmail.com>2016-06-02 17:25:18 -0700
committerJessie Wincek <jbwincek@gmail.com>2016-06-02 17:25:18 -0700
commit01ef42a515f79f607b3c5228fbb945bb38d103ac (patch)
tree4efc1a6360e6cf2d12aee748af3e3bc8311a1808
parente29c89f4bcb5a8d16f327e3d40dcfaa86e46563b (diff)
downloadpygments-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.py1
-rw-r--r--tests/test_properties.py33
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)))