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
 | |
| }
 |