Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
.gitignore | H A D | 28-Aug-2019 | 52 | |||
.travis.yml | H A D | 28-Aug-2019 | 45 | |||
CHANGES.md | H A D | 28-Aug-2019 | 101 | |||
LICENSE | H A D | 28-Aug-2019 | 1 KiB | |||
Makefile | H A D | 28-Aug-2019 | 1.8 KiB | |||
README.md | H A D | 28-Aug-2019 | 1.7 KiB | |||
comment.go | H A D | 28-Aug-2019 | 4.6 KiB | |||
comment_test.go | H A D | 28-Aug-2019 | 8.3 KiB | |||
enum.go | H A D | 28-Aug-2019 | 5 KiB | |||
enum_test.go | H A D | 28-Aug-2019 | 4.5 KiB | |||
extensions.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
extensions_test.go | H A D | 28-Aug-2019 | 2 KiB | |||
field.go | H A D | 28-Aug-2019 | 4.5 KiB | |||
field_test.go | H A D | 28-Aug-2019 | 5.8 KiB | |||
go.mod | H A D | 28-Aug-2019 | 42 | |||
group.go | H A D | 28-Aug-2019 | 2.8 KiB | |||
group_test.go | H A D | 28-Aug-2019 | 2.1 KiB | |||
import.go | H A D | 28-Aug-2019 | 2.1 KiB | |||
import_test.go | H A D | 28-Aug-2019 | 1.5 KiB | |||
message.go | H A D | 28-Aug-2019 | 5.8 KiB | |||
message_test.go | H A D | 28-Aug-2019 | 4.3 KiB | |||
oneof.go | H A D | 28-Aug-2019 | 3.8 KiB | |||
oneof_test.go | H A D | 28-Aug-2019 | 4.1 KiB | |||
option.go | H A D | 28-Aug-2019 | 10 KiB | |||
option_test.go | H A D | 28-Aug-2019 | 20.3 KiB | |||
package.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
package_test.go | H A D | 28-Aug-2019 | 1.4 KiB | |||
parent_accessor.go | H A D | 28-Aug-2019 | 2.6 KiB | |||
parent_test.go | H A D | 28-Aug-2019 | 3.7 KiB | |||
parser.go | H A D | 28-Aug-2019 | 6.8 KiB | |||
parser_test.go | H A D | 28-Aug-2019 | 4.2 KiB | |||
proto.go | H A D | 28-Aug-2019 | 4.7 KiB | |||
protobuf_test.go | H A D | 28-Aug-2019 | 991 | |||
range.go | H A D | 28-Aug-2019 | 2.6 KiB | |||
range_test.go | H A D | 28-Aug-2019 | 2.2 KiB | |||
reserved.go | H A D | 28-Aug-2019 | 2.3 KiB | |||
reserved_test.go | H A D | 28-Aug-2019 | 2.1 KiB | |||
service.go | H A D | 28-Aug-2019 | 6.2 KiB | |||
service_test.go | H A D | 28-Aug-2019 | 5.6 KiB | |||
syntax.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
syntax_test.go | H A D | 28-Aug-2019 | 1.4 KiB | |||
token.go | H A D | 28-Aug-2019 | 4.7 KiB | |||
token_test.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
visitor.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
visitor_test.go | H A D | 28-Aug-2019 | 1.9 KiB | |||
walk.go | H A D | 28-Aug-2019 | 2.9 KiB | |||
walk_test.go | H A D | 28-Aug-2019 | 629 |
README.md
1# proto 2 3[![Build Status](https://travis-ci.org/emicklei/proto.png)](https://travis-ci.org/emicklei/proto) 4[![Go Report Card](https://goreportcard.com/badge/github.com/emicklei/proto)](https://goreportcard.com/report/github.com/emicklei/proto) 5[![GoDoc](https://godoc.org/github.com/emicklei/proto?status.svg)](https://godoc.org/github.com/emicklei/proto) 6 7Package in Go for parsing Google Protocol Buffers [.proto files version 2 + 3] (https://developers.google.com/protocol-buffers/docs/reference/proto3-spec) 8 9### install 10 11 go get -u -v github.com/emicklei/proto 12 13### usage 14 15 package main 16 17 import ( 18 "fmt" 19 "os" 20 21 "github.com/emicklei/proto" 22 ) 23 24 func main() { 25 reader, _ := os.Open("test.proto") 26 defer reader.Close() 27 28 parser := proto.NewParser(reader) 29 definition, _ := parser.Parse() 30 31 proto.Walk(definition, 32 proto.WithService(handleService), 33 proto.WithMessage(handleMessage)) 34 } 35 36 func handleService(s *proto.Service) { 37 fmt.Println(s.Name) 38 } 39 40 func handleMessage(m *proto.Message) { 41 fmt.Println(m.Name) 42 } 43 44### validation 45 46Current parser implementation is not completely validating `.proto` definitions. 47In many but not all cases, the parser will report syntax errors when reading unexpected charaters or tokens. 48Use some linting tools (e.g. https://github.com/uber/prototool) or `protoc` for full validation. 49 50### contributions 51 52See [proto-contrib](https://github.com/emicklei/proto-contrib) for other contributions on top of this package such as protofmt, proto2xsd and proto2gql. 53[protobuf2map](https://github.com/emicklei/protobuf2map) is a small package for inspecting serialized protobuf messages using its `.proto` definition. 54 55© 2017, [ernestmicklei.com](http://ernestmicklei.com). MIT License. Contributions welcome.