|
|
|
@ -67,6 +67,25 @@ class Error(Exception): |
|
|
|
|
class ParseError(Error): |
|
|
|
|
"""Thrown in case of ASCII parsing error.""" |
|
|
|
|
|
|
|
|
|
class TextWriter(object): |
|
|
|
|
def __init__(self, as_utf8): |
|
|
|
|
if six.PY2: |
|
|
|
|
self._writer = io.BytesIO() |
|
|
|
|
else: |
|
|
|
|
self._writer = io.StringIO() |
|
|
|
|
|
|
|
|
|
def write(self, val): |
|
|
|
|
if six.PY2: |
|
|
|
|
if isinstance(val, six.text_type): |
|
|
|
|
val = val.encode('utf-8') |
|
|
|
|
return self._writer.write(val) |
|
|
|
|
|
|
|
|
|
def close(self): |
|
|
|
|
return self._writer.close() |
|
|
|
|
|
|
|
|
|
def getvalue(self): |
|
|
|
|
return self._writer.getvalue() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def MessageToString(message, as_utf8=False, as_one_line=False, |
|
|
|
|
pointy_brackets=False, use_index_order=False, |
|
|
|
@ -92,7 +111,7 @@ def MessageToString(message, as_utf8=False, as_one_line=False, |
|
|
|
|
Returns: |
|
|
|
|
A string of the text formatted protocol buffer message. |
|
|
|
|
""" |
|
|
|
|
out = io.BytesIO() |
|
|
|
|
out = TextWriter(as_utf8) |
|
|
|
|
PrintMessage(message, out, as_utf8=as_utf8, as_one_line=as_one_line, |
|
|
|
|
pointy_brackets=pointy_brackets, |
|
|
|
|
use_index_order=use_index_order, |
|
|
|
@ -159,11 +178,7 @@ def PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False, |
|
|
|
|
# For groups, use the capitalized name. |
|
|
|
|
out.write(field.message_type.name) |
|
|
|
|
else: |
|
|
|
|
if isinstance(field.name, six.text_type): |
|
|
|
|
name = field.name.encode('utf-8') |
|
|
|
|
else: |
|
|
|
|
name = field.name |
|
|
|
|
out.write(name) |
|
|
|
|
out.write(field.name) |
|
|
|
|
|
|
|
|
|
if field.cpp_type != descriptor.FieldDescriptor.CPPTYPE_MESSAGE: |
|
|
|
|
# The colon is optional in this case, but our cross-language golden files |
|
|
|
|