package proto
import "github.com/emicklei/proto"
Index ¶
- func Walk(proto *Proto, handlers ...Handler)
- type Comment
- func (c *Comment) Accept(v Visitor)
- func (c *Comment) Merge(other *Comment)
- func (c Comment) Message() string
- type Documented
- type Enum
- type EnumField
- type Extensions
- type Field
- type Group
- type Handler
- func WithEnum(apply func(*Enum)) Handler
- func WithMessage(apply func(*Message)) Handler
- func WithOneof(apply func(*Oneof)) Handler
- func WithOption(apply func(*Option)) Handler
- func WithRPC(apply func(*RPC)) Handler
- func WithService(apply func(*Service)) Handler
- type Import
- type Literal
- type MapField
- type Message
- type NamedLiteral
- type NormalField
- type OneOfField
- type Oneof
- type Option
- type Package
- type Parser
- func NewParser(r io.Reader) *Parser
- func (p *Parser) Filename(f string)
- func (p *Parser) Parse() (*Proto, error)
- type Proto
- type RPC
- type Range
- type Reserved
- type Service
- type Syntax
- type Visitee
- type Visitor
Functions ¶
func Walk ¶
Walk recursively pays a visit to all Visitees of a Proto and calls each handler with it.
Types ¶
type Comment ¶
type Comment struct { Position scanner.Position // Lines are comment text lines without prefixes //, ///, /* or suffix */ Lines []string Cstyle bool // refers to /* ... */, C++ style is using // ExtraSlash bool // is true if the comment starts with 3 slashes }
Comment one or more comment text lines, either in c- or c++ style.
func (*Comment) Accept ¶
Accept dispatches the call to the visitor.
func (*Comment) Merge ¶
Merge appends all lines from the argument comment.
func (Comment) Message ¶
Message returns the first line or empty if no lines.
type Documented ¶
type Documented interface { Doc() *Comment }
Documented is for types that may have an associated comment (not inlined).
type Enum ¶
type Enum struct { Position scanner.Position Comment *Comment Name string Elements []Visitee Parent Visitee }
Enum definition consists of a name and an enum body.
func (*Enum) Accept ¶
Accept dispatches the call to the visitor.
func (*Enum) Doc ¶
Doc is part of Documented
type EnumField ¶
type EnumField struct { Position scanner.Position Comment *Comment Name string Integer int // ValueOption is deprecated, use Elements instead ValueOption *Option Elements []Visitee // such as Option and Comment InlineComment *Comment Parent Visitee }
EnumField is part of the body of an Enum.
func (*EnumField) Accept ¶
Accept dispatches the call to the visitor.
func (*EnumField) Doc ¶
Doc is part of Documented
type Extensions ¶
type Extensions struct { Position scanner.Position Comment *Comment Ranges []Range InlineComment *Comment Parent Visitee }
Extensions declare that a range of field numbers in a message are available for third-party extensions. proto2 only
func (*Extensions) Accept ¶
func (e *Extensions) Accept(v Visitor)
Accept dispatches the call to the visitor.
type Field ¶
type Field struct { Position scanner.Position Comment *Comment Name string Type string Sequence int Options []*Option InlineComment *Comment Parent Visitee }
Field is an abstract message field.
type Group ¶
type Group struct { Position scanner.Position Comment *Comment Name string Optional bool Repeated bool Required bool Sequence int Elements []Visitee Parent Visitee }
Group represents a (proto2 only) group. https://developers.google.com/protocol-buffers/docs/reference/proto2-spec#group_field
func (*Group) Accept ¶
Accept dispatches the call to the visitor.
func (*Group) Doc ¶
Doc is part of Documented
type Handler ¶
type Handler func(v Visitee)
Handler is a type of function that accepts a Visitee.
func WithEnum ¶
WithEnum returns a Handler that will call the apply function when the Visitee is a Enum.
func WithMessage ¶
WithMessage returns a Handler that will call the apply function when the Visitee is a Message.
func WithOneof ¶
WithOneof returns a Handler that will call the apply function when the Visitee is a Oneof.
func WithOption ¶
WithOption returns a Handler that will call the apply function when the Visitee is a Option.
func WithRPC ¶
WithRPC returns a Handler that will call the apply function when the Visitee is a RPC.
func WithService ¶
WithService returns a Handler that will call the apply function when the Visitee is a Service.
type Import ¶
type Import struct { Position scanner.Position Comment *Comment Filename string Kind string // weak, public, <empty> InlineComment *Comment Parent Visitee }
Import holds a filename to another .proto definition.
func (*Import) Accept ¶
Accept dispatches the call to the visitor.
func (*Import) Doc ¶
Doc is part of Documented
type Literal ¶
type Literal struct { Position scanner.Position Source string IsString bool // literal value can be an array literal value (even nested) Array []*Literal }
Literal represents intLit,floatLit,strLit or boolLit
func (Literal) SourceRepresentation ¶
SourceRepresentation returns the source (if quoted then use double quote).
type MapField ¶
MapField represents a map entry in a message.
func (*MapField) Accept ¶
Accept dispatches the call to the visitor.
type Message ¶
type Message struct { Position scanner.Position Comment *Comment Name string IsExtend bool Elements []Visitee Parent Visitee }
Message consists of a message name and a message body.
func (*Message) Accept ¶
Accept dispatches the call to the visitor.
func (*Message) Doc ¶
Doc is part of Documented
type NamedLiteral ¶
type NamedLiteral struct { *Literal Name string // PrintsColon is true when the Name must be printed with a colon suffix PrintsColon bool }
NamedLiteral associates a name with a Literal
type NormalField ¶
NormalField represents a field in a Message.
func (*NormalField) Accept ¶
func (f *NormalField) Accept(v Visitor)
Accept dispatches the call to the visitor.
func (*NormalField) Doc ¶
func (f *NormalField) Doc() *Comment
Doc is part of Documented
type OneOfField ¶
type OneOfField struct { *Field }
OneOfField is part of Oneof.
func (*OneOfField) Accept ¶
func (o *OneOfField) Accept(v Visitor)
Accept dispatches the call to the visitor.
func (*OneOfField) Doc ¶
func (o *OneOfField) Doc() *Comment
Doc is part of Documented Note: although Doc() is defined on Field, it must be implemented here as well.
type Oneof ¶
type Oneof struct { Position scanner.Position Comment *Comment Name string Elements []Visitee Parent Visitee }
Oneof is a field alternate.
func (*Oneof) Accept ¶
Accept dispatches the call to the visitor.
type Option ¶
type Option struct { Position scanner.Position Comment *Comment Name string Constant Literal IsEmbedded bool AggregatedConstants []*NamedLiteral InlineComment *Comment Parent Visitee }
Option is a protoc compiler option
func (*Option) Accept ¶
Accept dispatches the call to the visitor.
func (*Option) Doc ¶
Doc is part of Documented
type Package ¶
type Package struct { Position scanner.Position Comment *Comment Name string InlineComment *Comment Parent Visitee }
Package specifies the namespace for all proto elements.
func (*Package) Accept ¶
Accept dispatches the call to the visitor.
func (*Package) Doc ¶
Doc is part of Documented
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser represents a parser.
func NewParser ¶
NewParser returns a new instance of Parser.
func (*Parser) Filename ¶
Filename is for reporting. Optional.
func (*Parser) Parse ¶
Parse parses a proto definition. May return a parse or scanner error.
type Proto ¶
Proto represents a .proto definition
func (*Proto) Accept ¶
Accept dispatches the call to the visitor.
type RPC ¶
type RPC struct { Position scanner.Position Comment *Comment Name string RequestType string StreamsRequest bool ReturnsType string StreamsReturns bool Elements []Visitee InlineComment *Comment Parent Visitee // Options field is DEPRECATED, use Elements instead. Options []*Option }
RPC represents an rpc entry in a message.
func (*RPC) Accept ¶
Accept dispatches the call to the visitor.
func (*RPC) Doc ¶
Doc is part of Documented
type Range ¶
Range is to specify number intervals (with special end value "max")
func (Range) SourceRepresentation ¶
SourceRepresentation return a single number if from = to. Returns <from> to <to> otherwise unless Max then return <from> to max.
type Reserved ¶
type Reserved struct { Position scanner.Position Comment *Comment Ranges []Range FieldNames []string InlineComment *Comment Parent Visitee }
Reserved statements declare a range of field numbers or field names that cannot be used in a message.
func (*Reserved) Accept ¶
Accept dispatches the call to the visitor.
type Service ¶
type Service struct { Position scanner.Position Comment *Comment Name string Elements []Visitee Parent Visitee }
Service defines a set of RPC calls.
func (*Service) Accept ¶
Accept dispatches the call to the visitor.
func (*Service) Doc ¶
Doc is part of Documented
type Syntax ¶
type Syntax struct { Position scanner.Position Comment *Comment Value string InlineComment *Comment Parent Visitee }
Syntax should have value "proto"
func (*Syntax) Accept ¶
Accept dispatches the call to the visitor.
func (*Syntax) Doc ¶
Doc is part of Documented
type Visitee ¶
type Visitee interface { Accept(v Visitor) // contains filtered or unexported methods }
Visitee is implemented by all Proto elements.
type Visitor ¶
type Visitor interface { //VisitProto(p *Proto) VisitMessage(m *Message) VisitService(v *Service) VisitSyntax(s *Syntax) VisitPackage(p *Package) VisitOption(o *Option) VisitImport(i *Import) VisitNormalField(i *NormalField) VisitEnumField(i *EnumField) VisitEnum(e *Enum) VisitComment(e *Comment) VisitOneof(o *Oneof) VisitOneofField(o *OneOfField) VisitReserved(r *Reserved) VisitRPC(r *RPC) VisitMapField(f *MapField) // proto2 VisitGroup(g *Group) VisitExtensions(e *Extensions) }
Visitor is for dispatching Proto elements.
Source Files ¶
comment.go enum.go extensions.go field.go group.go import.go message.go oneof.go option.go package.go parent_accessor.go parser.go proto.go range.go reserved.go service.go syntax.go token.go visitor.go walk.go
- Version
- v1.4.7
- Published
- Apr 13, 2018
- Platform
- js/wasm
- Imports
- 8 packages
- Last checked
- now –
Tools for package owners.