Documentation
¶
Index ¶
- func Walk(proto *Proto, handlers ...Handler)
- type Comment
- type Documented
- type Enum
- type EnumField
- type Extensions
- type Field
- type Group
- type Handler
- type Import
- type Literal
- type MapField
- type Message
- type NamedLiteral
- type NormalField
- type OneOfField
- type Oneof
- type Option
- type Package
- type Parser
- type Proto
- type RPC
- type Range
- type Reserved
- type Service
- type Syntax
- type Visitee
- type Visitor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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.
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.
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.
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
type Handler ¶ added in v1.4.0
type Handler func(v Visitee)
Handler is a type of function that accepts a Visitee.
func WithEnum ¶ added in v1.4.0
WithEnum returns a Handler that will call the apply function when the Visitee is a Enum.
func WithMessage ¶ added in v1.4.0
WithMessage returns a Handler that will call the apply function when the Visitee is a Message.
func WithOneof ¶ added in v1.4.0
WithOneof returns a Handler that will call the apply function when the Visitee is a Oneof.
func WithOption ¶ added in v1.4.0
WithOption returns a Handler that will call the apply function when the Visitee is a Option.
func WithRPC ¶ added in v1.4.0
WithRPC returns a Handler that will call the apply function when the Visitee is a RPC.
func WithService ¶ added in v1.4.0
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.
type Literal ¶
Literal represents intLit,floatLit,strLit or boolLit
func (Literal) SourceRepresentation ¶ added in v1.2.0
SourceRepresentation returns the source (if quoted then use double quote).
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.
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.
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.
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
type Package ¶
type Package struct {
Position scanner.Position
Comment *Comment
Name string
InlineComment *Comment
Parent Visitee
}
Package specifies the namespace for all proto elements.
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser represents a parser.
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.
type Range ¶
Range is to specify number intervals (with special end value "max")
func (Range) SourceRepresentation ¶ added in v1.2.0
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.
type Service ¶
type Service struct {
Position scanner.Position
Comment *Comment
Name string
Elements []Visitee
Parent Visitee
}
Service defines a set of RPC calls.
type Syntax ¶
type Syntax struct {
Position scanner.Position
Comment *Comment
Value string
InlineComment *Comment
Parent Visitee
}
Syntax should have value "proto"
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.
