31 lines
518 B
Go
31 lines
518 B
Go
|
package generator
|
||
|
|
||
|
import (
|
||
|
"google.golang.org/protobuf/compiler/protogen"
|
||
|
)
|
||
|
|
||
|
type GoRef interface {
|
||
|
FindGoField(field string) *protogen.Field
|
||
|
}
|
||
|
|
||
|
func NewGoRef(p *protogen.Plugin) (GoRef, error) {
|
||
|
return goRef{p}, nil
|
||
|
}
|
||
|
|
||
|
type goRef struct {
|
||
|
*protogen.Plugin
|
||
|
}
|
||
|
|
||
|
func (g goRef) FindGoField(field string) *protogen.Field {
|
||
|
for _, file := range g.Files {
|
||
|
for _, msg := range file.Messages {
|
||
|
for _, f := range msg.Fields {
|
||
|
if string(f.Desc.FullName()) == field {
|
||
|
return f
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|