Add stringFileOptionsExtension
This commit is contained in:
parent
c6eca2356c
commit
2d28c0f341
@ -146,6 +146,7 @@ var ProtoHelpersFuncMap = template.FuncMap{
|
|||||||
"leadingComment": leadingComment,
|
"leadingComment": leadingComment,
|
||||||
"trailingComment": trailingComment,
|
"trailingComment": trailingComment,
|
||||||
"leadingDetachedComments": leadingDetachedComments,
|
"leadingDetachedComments": leadingDetachedComments,
|
||||||
|
"stringFileOptionsExtension": stringFileOptionsExtension,
|
||||||
"stringMessageExtension": stringMessageExtension,
|
"stringMessageExtension": stringMessageExtension,
|
||||||
"stringFieldExtension": stringFieldExtension,
|
"stringFieldExtension": stringFieldExtension,
|
||||||
"int64FieldExtension": int64FieldExtension,
|
"int64FieldExtension": int64FieldExtension,
|
||||||
@ -348,6 +349,46 @@ func stringMethodOptionsExtension(fieldID int32, f *descriptor.MethodDescriptorP
|
|||||||
return *str
|
return *str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stringFileOptionsExtension extracts file options of a string type.
|
||||||
|
// To define your own extensions see:
|
||||||
|
// https://developers.google.com/protocol-buffers/docs/proto#customoptions
|
||||||
|
// Typically the fieldID of private extensions should be in the range:
|
||||||
|
// 50000-99999
|
||||||
|
func stringFileOptionsExtension(fieldID int32, f *descriptor.FileDescriptorProto) string {
|
||||||
|
if f == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.FileOptions
|
||||||
|
var extensionType *string
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("bytes,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
str, ok := ext.(*string)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return *str
|
||||||
|
}
|
||||||
|
|
||||||
func stringFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) string {
|
func stringFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) string {
|
||||||
if f == nil {
|
if f == nil {
|
||||||
return ""
|
return ""
|
||||||
|
Loading…
Reference in New Issue
Block a user