Same as r275 except for Python.

This commit is contained in:
kenton@google.com 2009-12-23 01:32:45 +00:00
parent 35d2f017a7
commit eef5f8396d
2 changed files with 10 additions and 2 deletions

View File

@ -191,7 +191,8 @@ class TextFormatTest(unittest.TestCase):
'repeated_double: 1.23e+22\n'
'repeated_double: 1.23e-18\n'
'repeated_string: \n'
'\"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\\"\"\n')
'\"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\\"\"\n'
'repeated_string: "foo" \'corge\' "grault"')
text_format.Merge(text, message)
self.assertEqual(-9223372036854775808, message.repeated_int64[0])
@ -201,6 +202,7 @@ class TextFormatTest(unittest.TestCase):
self.assertEqual(1.23e-18, message.repeated_double[2])
self.assertEqual(
'\000\001\a\b\f\n\r\t\v\\\'\"', message.repeated_string[0])
self.assertEqual('foocorgegrault', message.repeated_string[1])
def testMergeUnknownField(self):
message = unittest_pb2.TestAllTypes()

View File

@ -298,7 +298,7 @@ class _Tokenizer(object):
'[a-zA-Z_][0-9a-zA-Z_+-]*|' # an identifier
'[0-9+-][0-9a-zA-Z_.+-]*|' # a number
'\"([^\"\n\\\\]|\\\\.)*(\"|\\\\?$)|' # a double-quoted string
'\'([^\"\n\\\\]|\\\\.)*(\'|\\\\?$)') # a single-quoted string
'\'([^\'\n\\\\]|\\\\.)*(\'|\\\\?$)') # a single-quoted string
_IDENTIFIER = re.compile('\w+')
_INTEGER_CHECKERS = [type_checkers.Uint32ValueChecker(),
type_checkers.Int32ValueChecker(),
@ -530,6 +530,12 @@ class _Tokenizer(object):
Raises:
ParseError: If a byte array value couldn't be consumed.
"""
list = [self.ConsumeSingleByteString()]
while len(self.token) > 0 and self.token[0] in ('\'', '"'):
list.append(self.ConsumeSingleByteString())
return "".join(list)
def ConsumeSingleByteString(self):
text = self.token
if len(text) < 1 or text[0] not in ('\'', '"'):
raise self._ParseError('Exptected string.')