/binding/lua/testparser.lua
Lua | 57 lines | 44 code | 12 blank | 1 comment | 2 complexity | ccb230457bb1db41ac08b2c46db41f7b MD5 | raw file
- protobuf = require "protobuf"
- parser = require "parser"
- t = parser.register("addressbook.proto","../../test")
- local addressbook1 = {
- name = "Alice",
- id = 12345,
- phone = {
- { number = "1301234567" },
- { number = "87654321", type = "WORK" },
- { number = "13912345678", type = "MOBILE" },
- },
- email = "username@domain.com"
- }
- local addressbook2 = {
- name = "Bob",
- id = 12346,
- phone = {
- { number = "1301234568" },
- { number = "98765432", type = "HOME" },
- { number = "13998765432", type = "MOBILE" },
- }
- }
- code1 = protobuf.encode("tutorial.Person", addressbook1)
- code2 = protobuf.encode("tutorial.Person", addressbook2)
- decode1 = protobuf.decode("tutorial.Person" , code1)
- -- BUG [ISSUE#27](https://github.com/cloudwu/pbc/issues/27)
- decode1.profile.nick_name = "AHA"
- decode1.profile.icon = "id:1"
- decode2 = protobuf.decode("tutorial.Person" , code2)
- function print_addr(decoded)
- print(string.format('ID: %d, Name: %s, Email: %s', decoded.id, decoded.name, tostring(decoded.email)))
- if decoded.profile then
- print(string.format('\tNickname: %s, Icon: %s', tostring(decoded.profile.nick_name), tostring(decoded.profile.icon)))
- end
- for k, v in ipairs(decoded.phone) do
- print(string.format("\tPhone NO.%s: %16s %s", k, v.number, tostring(v.type)))
- end
- end
- print_addr(decode1)
- print_addr(decode2)
- buffer = protobuf.pack("tutorial.Person name id", "Alice", 123)
- print(protobuf.unpack("tutorial.Person name id", buffer))
- code_phone = protobuf.encode("tutorial.Person.PhoneNumber", { number = "18612345678" })
- decode_phone = protobuf.decode("tutorial.Person.PhoneNumber" , code_phone)
- print(string.format("Phone: %16s %s", decode_phone.number, tostring(decode_phone.type)))