feat (helper): add haskellType helper
This commit is contained in:
parent
80a62f29d8
commit
d454efa152
@ -84,6 +84,7 @@ var ProtoHelpersFuncMap = template.FuncMap{
|
|||||||
"getEnumValue": getEnumValue,
|
"getEnumValue": getEnumValue,
|
||||||
"isFieldMessage": isFieldMessage,
|
"isFieldMessage": isFieldMessage,
|
||||||
"isFieldRepeated": isFieldRepeated,
|
"isFieldRepeated": isFieldRepeated,
|
||||||
|
"haskellType": haskellType,
|
||||||
"goType": goType,
|
"goType": goType,
|
||||||
"goTypeWithPackage": goTypeWithPackage,
|
"goTypeWithPackage": goTypeWithPackage,
|
||||||
"jsType": jsType,
|
"jsType": jsType,
|
||||||
@ -169,6 +170,68 @@ func goTypeWithPackage(f *descriptor.FieldDescriptorProto) string {
|
|||||||
return goType(pkg, f)
|
return goType(pkg, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func haskellType(pkg string, f *descriptor.FieldDescriptorProto) string {
|
||||||
|
switch *f.Type {
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Float]"
|
||||||
|
}
|
||||||
|
return "Float"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_FLOAT:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Float]"
|
||||||
|
}
|
||||||
|
return "Float"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_INT64:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Int64]"
|
||||||
|
}
|
||||||
|
return "Int64"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_UINT64:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Word]"
|
||||||
|
}
|
||||||
|
return "Word"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_INT32:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Int]"
|
||||||
|
}
|
||||||
|
return "Int"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_UINT32:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Word]"
|
||||||
|
}
|
||||||
|
return "Word"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_BOOL:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Bool]"
|
||||||
|
}
|
||||||
|
return "Bool"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_STRING:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Text]"
|
||||||
|
}
|
||||||
|
return "Text"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
|
||||||
|
if pkg != "" {
|
||||||
|
pkg = pkg + "."
|
||||||
|
}
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return fmt.Sprintf("[%s%s]", pkg, shortType(*f.TypeName))
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s%s", pkg, shortType(*f.TypeName))
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_BYTES:
|
||||||
|
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return "[Word8]"
|
||||||
|
}
|
||||||
|
return "Word8"
|
||||||
|
case descriptor.FieldDescriptorProto_TYPE_ENUM:
|
||||||
|
return fmt.Sprintf("%s%s", pkg, shortType(*f.TypeName))
|
||||||
|
default:
|
||||||
|
return "Generic"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func goType(pkg string, f *descriptor.FieldDescriptorProto) string {
|
func goType(pkg string, f *descriptor.FieldDescriptorProto) string {
|
||||||
switch *f.Type {
|
switch *f.Type {
|
||||||
case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
|
case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
|
||||||
|
Loading…
Reference in New Issue
Block a user