func GetMap(file *descriptor.FileDescriptorProto, field *descriptor.FieldDescriptorProto) *descriptor.DescriptorProto { if !field.IsMessage() { return nil } typeName := strings.TrimPrefix(field.GetTypeName(), "."+file.GetPackage()+".") if strings.Contains(typeName, "Map") && !strings.HasSuffix(typeName, "Entry") { typeName += "." + CamelCase(field.GetName()) + "Entry" } return file.GetMessage(typeName) }
func GetMap(file *descriptor.FileDescriptorProto, field *descriptor.FieldDescriptorProto) *descriptor.DescriptorProto { if !field.IsMessage() { return nil } typeName := field.GetTypeName() if strings.Contains(typeName, "Map") && !strings.HasSuffix(typeName, "Entry") { typeName += "." + CamelCase(field.GetName()) + "Entry" } ts := strings.Split(typeName, ".") if len(ts) == 1 { return file.GetMessage(typeName) } newTypeName := strings.Join(ts[2:], ".") return file.GetMessage(newTypeName) }
func NotGoogleProtobufDescriptorProto(file *descriptor.FileDescriptorProto) bool { // can not just check if file.GetName() == "google/protobuf/descriptor.proto" because we do not want to assume compile path _, fileName := filepath.Split(file.GetName()) return !(file.GetPackage() == "google.protobuf" && fileName == "descriptor.proto") }
func IsProto3(file *google_protobuf.FileDescriptorProto) bool { return file.GetSyntax() == "proto3" }
func NotInPackageGoogleProtobuf(file *descriptor.FileDescriptorProto) bool { return !strings.HasPrefix(file.GetPackage(), "google.protobuf") }