Parse floats/doubles with leading whitespace
authorDavid Kerkeslager <kerkeslager@gmail.com>
Fri, 14 Apr 2017 15:49:11 +0000 (11:49 -0400)
committerDavid Kerkeslager <kerkeslager@gmail.com>
Fri, 14 Apr 2017 15:49:11 +0000 (11:49 -0400)
don/string.py
test_don.py

index 1e930ac..f77eab7 100644 (file)
@@ -106,6 +106,7 @@ def _make_integer_parser(width):
 _BINARY32_MATCHER = re.compile(r'(-?\d+\.\d+)f')
 _BINARY64_MATCHER = re.compile(r'(-?\d+\.\d+)d')
 
+@_consume_leading_whitespace
 def _binary32_parser(s):
     match = _BINARY32_MATCHER.match(s)
 
@@ -119,6 +120,7 @@ def _binary32_parser(s):
 
     return _shared._FAILED_PARSE_RESULT
 
+@_consume_leading_whitespace
 def _binary64_parser(s):
     match = _BINARY64_MATCHER.match(s)
 
index df62ff5..bdcc8dd 100644 (file)
@@ -245,9 +245,15 @@ class TestStringDeserialize(unittest.TestCase):
     def test_deserializes_float(self):
         self.assertEqual(1.0, string.deserialize('1.0f'))
 
+    def test_deserializes_float_with_leading_whitspace(self):
+        self.assertEqual(1.0, string.deserialize(' \t\n1.0f'))
+
     def test_deserializes_double(self):
         self.assertEqual(1.0, string.deserialize('1.0d'))
 
+    def test_deserializes_double_with_leading_whitespace(self):
+        self.assertEqual(1.0, string.deserialize(' \t\n1.0d'))
+
     def test_deserializes_binary(self):
         self.assertEqual(
             b'\xde\xad\xbe\xef',