dev
This commit is contained in:
24
internal/plugin/messagegen.go
Normal file
24
internal/plugin/messagegen.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-tools/protoc-gen-ts/internal/codegen"
|
||||
"google.golang.org/protobuf/reflect/protoreflect"
|
||||
)
|
||||
|
||||
type messageGenerator struct {
|
||||
pkg protoreflect.FullName
|
||||
message protoreflect.MessageDescriptor
|
||||
}
|
||||
|
||||
func (m messageGenerator) Generate(f *codegen.File) {
|
||||
commentGenerator{descriptor: m.message}.generateLeading(f, 0)
|
||||
f.P("export type ", scopedDescriptorTypeName(m.pkg, m.message), " = {")
|
||||
rangeFields(m.message, func(field protoreflect.FieldDescriptor) {
|
||||
commentGenerator{descriptor: field}.generateLeading(f, 1)
|
||||
fieldType := typeFromField(m.pkg, field)
|
||||
f.P(t(1), field.JSONName(), "?: ", fieldType.Reference(), ";")
|
||||
})
|
||||
|
||||
f.P("};")
|
||||
f.P()
|
||||
}
|
||||
Reference in New Issue
Block a user