dev
This commit is contained in:
58
internal/plugin/helpers.go
Normal file
58
internal/plugin/helpers.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"google.golang.org/protobuf/reflect/protoreflect"
|
||||
)
|
||||
|
||||
func scopedDescriptorTypeName(pkg protoreflect.FullName, desc protoreflect.Descriptor) string {
|
||||
name := string(desc.Name())
|
||||
var prefix string
|
||||
if desc.Parent() != desc.ParentFile() {
|
||||
prefix = descriptorTypeName(desc.Parent()) + "_"
|
||||
}
|
||||
if desc.ParentFile().Package() != pkg {
|
||||
prefix = packagePrefix(desc.ParentFile().Package()) + prefix
|
||||
}
|
||||
return prefix + name
|
||||
}
|
||||
|
||||
func descriptorTypeName(desc protoreflect.Descriptor) string {
|
||||
name := string(desc.Name())
|
||||
var prefix string
|
||||
if desc.Parent() != desc.ParentFile() {
|
||||
prefix = descriptorTypeName(desc.Parent()) + "_"
|
||||
}
|
||||
return prefix + name
|
||||
}
|
||||
|
||||
func packagePrefix(pkg protoreflect.FullName) string {
|
||||
return strings.Join(strings.Split(string(pkg), "."), "") + "_"
|
||||
}
|
||||
|
||||
func rangeFields(message protoreflect.MessageDescriptor, f func(field protoreflect.FieldDescriptor)) {
|
||||
for i := 0; i < message.Fields().Len(); i++ {
|
||||
f(message.Fields().Get(i))
|
||||
}
|
||||
}
|
||||
|
||||
func rangeMethods(methods protoreflect.MethodDescriptors, f func(method protoreflect.MethodDescriptor)) {
|
||||
for i := 0; i < methods.Len(); i++ {
|
||||
f(methods.Get(i))
|
||||
}
|
||||
}
|
||||
|
||||
func rangeEnumValues(enum protoreflect.EnumDescriptor, f func(value protoreflect.EnumValueDescriptor, last bool)) {
|
||||
for i := 0; i < enum.Values().Len(); i++ {
|
||||
if i == enum.Values().Len()-1 {
|
||||
f(enum.Values().Get(i), true)
|
||||
} else {
|
||||
f(enum.Values().Get(i), false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func t(n int) string {
|
||||
return strings.Repeat(" ", n)
|
||||
}
|
||||
Reference in New Issue
Block a user