forked from mirror/go-json
Add string tag operation
This commit is contained in:
parent
4e3378926b
commit
8f7cb46c5d
|
@ -25,11 +25,16 @@ type headType struct {
|
|||
OmitEmptyPtrHead string
|
||||
AnonymousOmitEmptyHead string
|
||||
AnonymousOmitEmptyPtrHead string
|
||||
StringTagHead string
|
||||
StringTagPtrHead string
|
||||
AnonymousStringTagHead string
|
||||
AnonymousStringTagPtrHead string
|
||||
}
|
||||
|
||||
type fieldType struct {
|
||||
Field string
|
||||
OmitEmptyField string
|
||||
StringTagField string
|
||||
}
|
||||
|
||||
func _main() error {
|
||||
|
@ -93,6 +98,10 @@ func (t opType) headToPtrHead() opType {
|
|||
return op{{ $type.OmitEmptyPtrHead }}
|
||||
case op{{ $type.AnonymousOmitEmptyHead }}:
|
||||
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
||||
case op{{ $type.StringTagHead }}:
|
||||
return op{{ $type.StringTagPtrHead }}
|
||||
case op{{ $type.AnonymousStringTagHead }}:
|
||||
return op{{ $type.AnonymousStringTagPtrHead }}
|
||||
{{- end }}
|
||||
}
|
||||
return t
|
||||
|
@ -109,6 +118,10 @@ func (t opType) headToAnonymousHead() opType {
|
|||
return op{{ $type.AnonymousOmitEmptyHead }}
|
||||
case op{{ $type.OmitEmptyPtrHead }}:
|
||||
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
||||
case op{{ $type.StringTagHead }}:
|
||||
return op{{ $type.AnonymousStringTagHead }}
|
||||
case op{{ $type.StringTagPtrHead }}:
|
||||
return op{{ $type.AnonymousStringTagPtrHead }}
|
||||
{{- end }}
|
||||
}
|
||||
return t
|
||||
|
@ -126,6 +139,18 @@ func (t opType) headToOmitEmptyHead() opType {
|
|||
return t
|
||||
}
|
||||
|
||||
func (t opType) headToStringTagHead() opType {
|
||||
switch t {
|
||||
{{- range $type := .HeadTypes }}
|
||||
case op{{ $type.Head }}:
|
||||
return op{{ $type.StringTagHead }}
|
||||
case op{{ $type.PtrHead }}:
|
||||
return op{{ $type.StringTagPtrHead }}
|
||||
{{- end }}
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
func (t opType) ptrHeadToHead() opType {
|
||||
switch t {
|
||||
{{- range $type := .HeadTypes }}
|
||||
|
@ -137,6 +162,10 @@ func (t opType) ptrHeadToHead() opType {
|
|||
return op{{ $type.OmitEmptyHead }}
|
||||
case op{{ $type.AnonymousOmitEmptyPtrHead }}:
|
||||
return op{{ $type.AnonymousOmitEmptyHead }}
|
||||
case op{{ $type.StringTagPtrHead }}:
|
||||
return op{{ $type.StringTagHead }}
|
||||
case op{{ $type.AnonymousStringTagPtrHead }}:
|
||||
return op{{ $type.AnonymousStringTagHead }}
|
||||
{{- end }}
|
||||
}
|
||||
return t
|
||||
|
@ -152,6 +181,16 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
return t
|
||||
}
|
||||
|
||||
func (t opType) fieldToStringTagField() opType {
|
||||
switch t {
|
||||
{{- range $type := .FieldTypes }}
|
||||
case op{{ $type.Field }}:
|
||||
return op{{ $type.StringTagField }}
|
||||
{{- end }}
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -199,14 +238,19 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
{"MapEnd", "MapEndIndent", "Op"},
|
||||
{"StructFieldHead", "StructFieldHeadIndent", "StructField"},
|
||||
{"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"},
|
||||
{"StructFieldHeadStringTag", "StructFieldHeadStringTagIndent", "StructField"},
|
||||
{"StructFieldAnonymousHead", "StructFieldAnonymousHeadIndent", "StructField"},
|
||||
{"StructFieldAnonymousHeadOmitEmpty", "StructFieldAnonymousHeadOmitEmptyIndent", "StructField"},
|
||||
{"StructFieldPtrAnonymousHeadOmitEmpty", "StructFieldPtrAnonymousHeadOmitEmptyIndent", "StructField"},
|
||||
{"StructFieldAnonymousHeadStringTag", "StructFieldAnonymousHeadStringTagIndent", "StructField"},
|
||||
{"StructFieldPtrAnonymousHeadStringTag", "StructFieldPtrAnonymousHeadStringTagIndent", "StructField"},
|
||||
{"StructFieldPtrHead", "StructFieldPtrHeadIndent", "StructField"},
|
||||
{"StructFieldPtrHeadOmitEmpty", "StructFieldPtrHeadOmitEmptyIndent", "StructField"},
|
||||
{"StructFieldPtrHeadStringTag", "StructFieldPtrHeadStringTagIndent", "StructField"},
|
||||
{"StructFieldPtrAnonymousHead", "StructFieldPtrAnonymousHeadIndent", "StructField"},
|
||||
{"StructField", "StructFieldIndent", "StructField"},
|
||||
{"StructFieldOmitEmpty", "StructFieldOmitEmptyIndent", "StructField"},
|
||||
{"StructFieldStringTag", "StructFieldStringTagIndent", "StructField"},
|
||||
{"StructFieldRecursive", "StructFieldRecursiveIndent", "StructFieldRecursive"},
|
||||
{"StructEnd", "StructEndIndent", "StructField"},
|
||||
{"StructAnonymousEnd", "StructAnonymousEndIndent", "StructField"},
|
||||
|
@ -221,14 +265,19 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
for _, prefix := range []string{
|
||||
"StructFieldHead",
|
||||
"StructFieldHeadOmitEmpty",
|
||||
"StructFieldHeadStringTag",
|
||||
"StructFieldAnonymousHead",
|
||||
"StructFieldAnonymousHeadOmitEmpty",
|
||||
"StructFieldAnonymousHeadStringTag",
|
||||
"StructFieldPtrHead",
|
||||
"StructFieldPtrHeadOmitEmpty",
|
||||
"StructFieldPtrHeadStringTag",
|
||||
"StructFieldPtrAnonymousHead",
|
||||
"StructFieldPtrAnonymousHeadOmitEmpty",
|
||||
"StructFieldPtrAnonymousHeadStringTag",
|
||||
"StructField",
|
||||
"StructFieldOmitEmpty",
|
||||
"StructFieldStringTag",
|
||||
} {
|
||||
for _, typ := range primitiveTypesUpper {
|
||||
opTypes = append(opTypes, opType{
|
||||
|
@ -252,8 +301,12 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
AnonymousPtrHead: "StructFieldPtrAnonymousHead",
|
||||
OmitEmptyHead: "StructFieldHeadOmitEmpty",
|
||||
OmitEmptyPtrHead: "StructFieldPtrHeadOmitEmpty",
|
||||
StringTagHead: "StructFieldHeadStringTag",
|
||||
StringTagPtrHead: "StructFieldPtrHeadStringTag",
|
||||
AnonymousOmitEmptyHead: "StructFieldAnonymousHeadOmitEmpty",
|
||||
AnonymousOmitEmptyPtrHead: "StructFieldPtrAnonymousHeadOmitEmpty",
|
||||
AnonymousStringTagHead: "StructFieldAnonymousHeadStringTag",
|
||||
AnonymousStringTagPtrHead: "StructFieldPtrAnonymousHeadStringTag",
|
||||
}
|
||||
headTypes := []headType{base}
|
||||
for _, prim := range primitiveTypesUpper {
|
||||
|
@ -266,6 +319,10 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
OmitEmptyPtrHead: fmt.Sprintf("%s%s", base.OmitEmptyPtrHead, prim),
|
||||
AnonymousOmitEmptyHead: fmt.Sprintf("%s%s", base.AnonymousOmitEmptyHead, prim),
|
||||
AnonymousOmitEmptyPtrHead: fmt.Sprintf("%s%s", base.AnonymousOmitEmptyPtrHead, prim),
|
||||
StringTagHead: fmt.Sprintf("%s%s", base.StringTagHead, prim),
|
||||
StringTagPtrHead: fmt.Sprintf("%s%s", base.StringTagPtrHead, prim),
|
||||
AnonymousStringTagHead: fmt.Sprintf("%s%s", base.AnonymousStringTagHead, prim),
|
||||
AnonymousStringTagPtrHead: fmt.Sprintf("%s%s", base.AnonymousStringTagPtrHead, prim),
|
||||
})
|
||||
}
|
||||
for _, typ := range headTypes {
|
||||
|
@ -278,24 +335,31 @@ func (t opType) fieldToOmitEmptyField() opType {
|
|||
OmitEmptyPtrHead: fmt.Sprintf("%sIndent", typ.OmitEmptyPtrHead),
|
||||
AnonymousOmitEmptyHead: fmt.Sprintf("%sIndent", typ.AnonymousOmitEmptyHead),
|
||||
AnonymousOmitEmptyPtrHead: fmt.Sprintf("%sIndent", typ.AnonymousOmitEmptyPtrHead),
|
||||
StringTagHead: fmt.Sprintf("%sIndent", typ.StringTagHead),
|
||||
StringTagPtrHead: fmt.Sprintf("%sIndent", typ.StringTagPtrHead),
|
||||
AnonymousStringTagHead: fmt.Sprintf("%sIndent", typ.AnonymousStringTagHead),
|
||||
AnonymousStringTagPtrHead: fmt.Sprintf("%sIndent", typ.AnonymousStringTagPtrHead),
|
||||
})
|
||||
}
|
||||
|
||||
baseField := fieldType{
|
||||
Field: "StructField",
|
||||
OmitEmptyField: "StructFieldOmitEmpty",
|
||||
StringTagField: "StructFieldStringTag",
|
||||
}
|
||||
fieldTypes := []fieldType{baseField}
|
||||
for _, prim := range primitiveTypesUpper {
|
||||
fieldTypes = append(fieldTypes, fieldType{
|
||||
Field: fmt.Sprintf("%s%s", baseField.Field, prim),
|
||||
OmitEmptyField: fmt.Sprintf("%s%s", baseField.OmitEmptyField, prim),
|
||||
StringTagField: fmt.Sprintf("%s%s", baseField.StringTagField, prim),
|
||||
})
|
||||
}
|
||||
for _, typ := range fieldTypes {
|
||||
fieldTypes = append(fieldTypes, fieldType{
|
||||
Field: fmt.Sprintf("%sIndent", typ.Field),
|
||||
OmitEmptyField: fmt.Sprintf("%sIndent", typ.OmitEmptyField),
|
||||
StringTagField: fmt.Sprintf("%sIndent", typ.StringTagField),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
2752
encode_optype.go
2752
encode_optype.go
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue