On Mon, Dec 8, 2008 at 10:21 AM, Kenton Varda <[EMAIL PROTECTED]> wrote:

> Hey Petar, isn't there a patch someone was trying to submit that implements
> text format parsing?  (For real, not by wrapping protoc.)  What's the status
> of that?


I'll review it today.
Hopefully the author hasn't forgotten about it.


>
>
> On Mon, Dec 8, 2008 at 5:03 AM, Nicholas Reid <[EMAIL PROTECTED]> wrote:
>
>>
>> Hi All,
>>
>> Firstly, just wanted to thank Kenton and the Google team, PB2 is a
>> beautiful piece of work! Thanks heaps.
>>
>> I will almost certainly go to some deep circle of Programmer's Hell
>> for this, but it might be useful for someone until the guys get a
>> chance to add text_mode message parsing functionality to the Python
>> API. There are almost certainly more elegant ways of doing this.
>>
>> Code:
>>
>> def parse_text_format(message_string, generated_message_type):
>>    """Parses the given Protobuf text_format into a new instance of
>> the given type."""
>>
>>    # Should be defined globally somewhere
>>    PROTO_FILENAME = "person.proto"
>>
>>    # Instance new message
>>    obj = generated_message_type()
>>
>>    # Wrap the protoc command-line utility, expects that 'protoc'
>> should be on your PATH somewhere
>>    (stdout, stdin) = popen2.popen2("protoc %s --encode=%s" %
>> (PROTO_FILENAME, message_type.DESCRIPTOR.name), bufsize=1024)
>>
>>    # Feed in the message_string in text_format
>>    stdin.write(message_string)
>>    stdin.close()
>>
>>    # Read out the protoc-encoded binary format
>>    binary_string = stdout.read()
>>    stdout.close()
>>
>>    # Parse the resulting binary representation.
>>    obj.ParseFromString(binary_string)
>>    return obj
>>
>> Example:
>>
>> Assuming person.proto contains:
>>
>> message Person {
>>    required string name = 1;
>> }
>>
>> Code:
>>
>> from person_pb2 import *
>> guido = parse_text_format("""name: "Guido"""", person)
>>
>> Should give you a person object which you can use for nefarious
>> purposes.
>>
>> Kind regards,
>>
>> Nicholas Reid
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to