63 lines
1.4 KiB
Markdown
63 lines
1.4 KiB
Markdown
protoc-gen-lua
|
|
==============
|
|
|
|
Google's Protocol Buffers project, ported to Lua
|
|
|
|
"[Protocol Buffers](http://code.google.com/p/protobuf/)" is a binary serialization format and technology, released to the open source community by Google in 2008.
|
|
|
|
There are various implementations of Protocol Buffers and this is for Lua.
|
|
|
|
## Install
|
|
|
|
Install python runtime and the protobuf 2.3 for python.
|
|
|
|
checkout the code.
|
|
|
|
Compile the C code:
|
|
|
|
`$cd protobuf && make`
|
|
|
|
Make a link to protoc-gen-lua in your $PATH:
|
|
|
|
`$cd /usr/local/bin && sudo ln -s /path/to/protoc-gen-lua/plugin/protoc-gen-lua`
|
|
|
|
Then you can compile the .proto like this:
|
|
|
|
`protoc --lua_out=./ foo.proto`
|
|
|
|
|
|
## Quick Example
|
|
You write a .proto file like this:
|
|
|
|
person.proto :
|
|
```
|
|
message Person {
|
|
required int32 id = 1;
|
|
required string name = 2;
|
|
optional string email = 3;
|
|
}
|
|
```
|
|
|
|
Then you compile it.
|
|
|
|
Then, make sure that protobuf/ in package.cpath and package.path, you use that code like this:
|
|
|
|
```
|
|
require "person_pb"
|
|
|
|
-- Serialize Example
|
|
local msg = person_pb.Person()
|
|
msg.id = 100
|
|
msg.name = "foo"
|
|
msg.email = "bar"
|
|
local pb_data = msg:SerializeToString()
|
|
|
|
-- Parse Example
|
|
local msg = person_pb.Person()
|
|
msg:ParseFromString(pb_data)
|
|
print(msg.id, msg.name, msg.email)
|
|
```
|
|
|
|
The API of this library is similar the protobuf library for python.
|
|
For a more complete example, read the [python documentation](http://code.google.com/apis/protocolbuffers/docs/pythontutorial.html).
|