From 8705165ae2cc56e5764ead3a5718600573c870ad Mon Sep 17 00:00:00 2001 From: jparyani Date: Sat, 6 Jul 2013 23:57:47 -0700 Subject: [PATCH] Update README.md --- README.md | 99 +++++++++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 076b6b4..1b7578e 100644 --- a/README.md +++ b/README.md @@ -25,63 +25,62 @@ You also need a working version of the latest [Cython](http://cython.org/) insta At the moment, there is no documenation, but the library is almost a 1:1 clone of the [Capnproto C++ Library](http://kentonv.github.io/capnproto/cxx.html) The examples has one example that shows off the capabilities quite nicely. Here it is, reproduced: +```python +import capnp +addressbook = capnp.load('addressbook.capnp') - import os - import capnp - this_dir = os.path.dirname(__file__) - addressbook = capnp.load(os.path.join(this_dir, 'addressbook.capnp')) +def writeAddressBook(fd): + message = capnp.MallocMessageBuilder() + addressBook = message.initRoot(addressbook.AddressBook) + people = addressBook.initPeople(2) - def writeAddressBook(fd): - message = capnp.MallocMessageBuilder() - addressBook = message.initRoot(addressbook.AddressBook) - people = addressBook.initPeople(2) + alice = people[0] + alice.id = 123 + alice.name = 'Alice' + alice.email = 'alice@example.com' + alicePhones = alice.initPhones(1) + alicePhones[0].number = "555-1212" + alicePhones[0].type = 'mobile' + alice.employment.school = "MIT" - alice = people[0] - alice.id = 123 - alice.name = 'Alice' - alice.email = 'alice@example.com' - alicePhones = alice.initPhones(1) - alicePhones[0].number = "555-1212" - alicePhones[0].type = 'mobile' - alice.employment.school = "MIT" + bob = people[1] + bob.id = 456 + bob.name = 'Bob' + bob.email = 'bob@example.com' + bobPhones = bob.initPhones(2) + bobPhones[0].number = "555-4567" + bobPhones[0].type = 'home' + bobPhones[1].number = "555-7654" + bobPhones[1].type = addressbook.Person.PhoneNumber.Type.WORK + bob.employment.unemployed = None # This is definitely bad, syntax will change at some point - bob = people[1] - bob.id = 456 - bob.name = 'Bob' - bob.email = 'bob@example.com' - bobPhones = bob.initPhones(2) - bobPhones[0].number = "555-4567" - bobPhones[0].type = 'home' - bobPhones[1].number = "555-7654" - bobPhones[1].type = addressbook.Person.PhoneNumber.Type.WORK - bob.employment.unemployed = None # This is definitely bad, syntax will change at some point + capnp.writePackedMessageToFd(fd, message) - capnp.writePackedMessageToFd(fd, message) +f = open('example', 'w') +writeAddressBook(f.fileno()) - f = open('example', 'w') - writeAddressBook(f.fileno()) +def printAddressBook(fd): + message = capnp.PackedFdMessageReader(f.fileno()) + addressBook = message.getRoot(addressbook.AddressBook) - def printAddressBook(fd): - message = capnp.PackedFdMessageReader(f.fileno()) - addressBook = message.getRoot(addressbook.AddressBook) + for person in addressBook.people: + print person.name, ':', person.email + for phone in person.phones: + print phone.type, ':', phone.number - for person in addressBook.people: - print person.name, ':', person.email - for phone in person.phones: - print phone.type, ':', phone.number + which = person.employment.which() + print which - which = person.employment.which() - print which + if which == addressbook.Person.Employment.Which.UNEMPLOYED: + print 'unemployed' + elif which == addressbook.Person.Employment.Which.EMPLOYER: + print 'employer:', person.employment.employer + elif which == addressbook.Person.Employment.Which.SCHOOL: + print 'student at:', person.employment.school + elif which == addressbook.Person.Employment.Which.SELF_EMPLOYED: + print 'unemployed' + print - if which == addressbook.Person.Employment.Which.UNEMPLOYED: - print 'unemployed' - elif which == addressbook.Person.Employment.Which.EMPLOYER: - print 'employer:', person.employment.employer - elif which == addressbook.Person.Employment.Which.SCHOOL: - print 'student at:', person.employment.school - elif which == addressbook.Person.Employment.Which.SELF_EMPLOYED: - print 'unemployed' - print - - f = open('example', 'r') - printAddressBook(f.fileno()) +f = open('example', 'r') +printAddressBook(f.fileno()) +```