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
|
OmitEmptyPtrHead string
|
||||||
AnonymousOmitEmptyHead string
|
AnonymousOmitEmptyHead string
|
||||||
AnonymousOmitEmptyPtrHead string
|
AnonymousOmitEmptyPtrHead string
|
||||||
|
StringTagHead string
|
||||||
|
StringTagPtrHead string
|
||||||
|
AnonymousStringTagHead string
|
||||||
|
AnonymousStringTagPtrHead string
|
||||||
}
|
}
|
||||||
|
|
||||||
type fieldType struct {
|
type fieldType struct {
|
||||||
Field string
|
Field string
|
||||||
OmitEmptyField string
|
OmitEmptyField string
|
||||||
|
StringTagField string
|
||||||
}
|
}
|
||||||
|
|
||||||
func _main() error {
|
func _main() error {
|
||||||
|
@ -93,6 +98,10 @@ func (t opType) headToPtrHead() opType {
|
||||||
return op{{ $type.OmitEmptyPtrHead }}
|
return op{{ $type.OmitEmptyPtrHead }}
|
||||||
case op{{ $type.AnonymousOmitEmptyHead }}:
|
case op{{ $type.AnonymousOmitEmptyHead }}:
|
||||||
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
||||||
|
case op{{ $type.StringTagHead }}:
|
||||||
|
return op{{ $type.StringTagPtrHead }}
|
||||||
|
case op{{ $type.AnonymousStringTagHead }}:
|
||||||
|
return op{{ $type.AnonymousStringTagPtrHead }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
|
@ -109,6 +118,10 @@ func (t opType) headToAnonymousHead() opType {
|
||||||
return op{{ $type.AnonymousOmitEmptyHead }}
|
return op{{ $type.AnonymousOmitEmptyHead }}
|
||||||
case op{{ $type.OmitEmptyPtrHead }}:
|
case op{{ $type.OmitEmptyPtrHead }}:
|
||||||
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
return op{{ $type.AnonymousOmitEmptyPtrHead }}
|
||||||
|
case op{{ $type.StringTagHead }}:
|
||||||
|
return op{{ $type.AnonymousStringTagHead }}
|
||||||
|
case op{{ $type.StringTagPtrHead }}:
|
||||||
|
return op{{ $type.AnonymousStringTagPtrHead }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
|
@ -126,6 +139,18 @@ func (t opType) headToOmitEmptyHead() opType {
|
||||||
return t
|
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 {
|
func (t opType) ptrHeadToHead() opType {
|
||||||
switch t {
|
switch t {
|
||||||
{{- range $type := .HeadTypes }}
|
{{- range $type := .HeadTypes }}
|
||||||
|
@ -137,6 +162,10 @@ func (t opType) ptrHeadToHead() opType {
|
||||||
return op{{ $type.OmitEmptyHead }}
|
return op{{ $type.OmitEmptyHead }}
|
||||||
case op{{ $type.AnonymousOmitEmptyPtrHead }}:
|
case op{{ $type.AnonymousOmitEmptyPtrHead }}:
|
||||||
return op{{ $type.AnonymousOmitEmptyHead }}
|
return op{{ $type.AnonymousOmitEmptyHead }}
|
||||||
|
case op{{ $type.StringTagPtrHead }}:
|
||||||
|
return op{{ $type.StringTagHead }}
|
||||||
|
case op{{ $type.AnonymousStringTagPtrHead }}:
|
||||||
|
return op{{ $type.AnonymousStringTagHead }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
|
@ -152,6 +181,16 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
return t
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -199,14 +238,19 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
{"MapEnd", "MapEndIndent", "Op"},
|
{"MapEnd", "MapEndIndent", "Op"},
|
||||||
{"StructFieldHead", "StructFieldHeadIndent", "StructField"},
|
{"StructFieldHead", "StructFieldHeadIndent", "StructField"},
|
||||||
{"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"},
|
{"StructFieldHeadOmitEmpty", "StructFieldHeadOmitEmptyIndent", "StructField"},
|
||||||
|
{"StructFieldHeadStringTag", "StructFieldHeadStringTagIndent", "StructField"},
|
||||||
{"StructFieldAnonymousHead", "StructFieldAnonymousHeadIndent", "StructField"},
|
{"StructFieldAnonymousHead", "StructFieldAnonymousHeadIndent", "StructField"},
|
||||||
{"StructFieldAnonymousHeadOmitEmpty", "StructFieldAnonymousHeadOmitEmptyIndent", "StructField"},
|
{"StructFieldAnonymousHeadOmitEmpty", "StructFieldAnonymousHeadOmitEmptyIndent", "StructField"},
|
||||||
{"StructFieldPtrAnonymousHeadOmitEmpty", "StructFieldPtrAnonymousHeadOmitEmptyIndent", "StructField"},
|
{"StructFieldPtrAnonymousHeadOmitEmpty", "StructFieldPtrAnonymousHeadOmitEmptyIndent", "StructField"},
|
||||||
|
{"StructFieldAnonymousHeadStringTag", "StructFieldAnonymousHeadStringTagIndent", "StructField"},
|
||||||
|
{"StructFieldPtrAnonymousHeadStringTag", "StructFieldPtrAnonymousHeadStringTagIndent", "StructField"},
|
||||||
{"StructFieldPtrHead", "StructFieldPtrHeadIndent", "StructField"},
|
{"StructFieldPtrHead", "StructFieldPtrHeadIndent", "StructField"},
|
||||||
{"StructFieldPtrHeadOmitEmpty", "StructFieldPtrHeadOmitEmptyIndent", "StructField"},
|
{"StructFieldPtrHeadOmitEmpty", "StructFieldPtrHeadOmitEmptyIndent", "StructField"},
|
||||||
|
{"StructFieldPtrHeadStringTag", "StructFieldPtrHeadStringTagIndent", "StructField"},
|
||||||
{"StructFieldPtrAnonymousHead", "StructFieldPtrAnonymousHeadIndent", "StructField"},
|
{"StructFieldPtrAnonymousHead", "StructFieldPtrAnonymousHeadIndent", "StructField"},
|
||||||
{"StructField", "StructFieldIndent", "StructField"},
|
{"StructField", "StructFieldIndent", "StructField"},
|
||||||
{"StructFieldOmitEmpty", "StructFieldOmitEmptyIndent", "StructField"},
|
{"StructFieldOmitEmpty", "StructFieldOmitEmptyIndent", "StructField"},
|
||||||
|
{"StructFieldStringTag", "StructFieldStringTagIndent", "StructField"},
|
||||||
{"StructFieldRecursive", "StructFieldRecursiveIndent", "StructFieldRecursive"},
|
{"StructFieldRecursive", "StructFieldRecursiveIndent", "StructFieldRecursive"},
|
||||||
{"StructEnd", "StructEndIndent", "StructField"},
|
{"StructEnd", "StructEndIndent", "StructField"},
|
||||||
{"StructAnonymousEnd", "StructAnonymousEndIndent", "StructField"},
|
{"StructAnonymousEnd", "StructAnonymousEndIndent", "StructField"},
|
||||||
|
@ -221,14 +265,19 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
for _, prefix := range []string{
|
for _, prefix := range []string{
|
||||||
"StructFieldHead",
|
"StructFieldHead",
|
||||||
"StructFieldHeadOmitEmpty",
|
"StructFieldHeadOmitEmpty",
|
||||||
|
"StructFieldHeadStringTag",
|
||||||
"StructFieldAnonymousHead",
|
"StructFieldAnonymousHead",
|
||||||
"StructFieldAnonymousHeadOmitEmpty",
|
"StructFieldAnonymousHeadOmitEmpty",
|
||||||
|
"StructFieldAnonymousHeadStringTag",
|
||||||
"StructFieldPtrHead",
|
"StructFieldPtrHead",
|
||||||
"StructFieldPtrHeadOmitEmpty",
|
"StructFieldPtrHeadOmitEmpty",
|
||||||
|
"StructFieldPtrHeadStringTag",
|
||||||
"StructFieldPtrAnonymousHead",
|
"StructFieldPtrAnonymousHead",
|
||||||
"StructFieldPtrAnonymousHeadOmitEmpty",
|
"StructFieldPtrAnonymousHeadOmitEmpty",
|
||||||
|
"StructFieldPtrAnonymousHeadStringTag",
|
||||||
"StructField",
|
"StructField",
|
||||||
"StructFieldOmitEmpty",
|
"StructFieldOmitEmpty",
|
||||||
|
"StructFieldStringTag",
|
||||||
} {
|
} {
|
||||||
for _, typ := range primitiveTypesUpper {
|
for _, typ := range primitiveTypesUpper {
|
||||||
opTypes = append(opTypes, opType{
|
opTypes = append(opTypes, opType{
|
||||||
|
@ -252,8 +301,12 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
AnonymousPtrHead: "StructFieldPtrAnonymousHead",
|
AnonymousPtrHead: "StructFieldPtrAnonymousHead",
|
||||||
OmitEmptyHead: "StructFieldHeadOmitEmpty",
|
OmitEmptyHead: "StructFieldHeadOmitEmpty",
|
||||||
OmitEmptyPtrHead: "StructFieldPtrHeadOmitEmpty",
|
OmitEmptyPtrHead: "StructFieldPtrHeadOmitEmpty",
|
||||||
|
StringTagHead: "StructFieldHeadStringTag",
|
||||||
|
StringTagPtrHead: "StructFieldPtrHeadStringTag",
|
||||||
AnonymousOmitEmptyHead: "StructFieldAnonymousHeadOmitEmpty",
|
AnonymousOmitEmptyHead: "StructFieldAnonymousHeadOmitEmpty",
|
||||||
AnonymousOmitEmptyPtrHead: "StructFieldPtrAnonymousHeadOmitEmpty",
|
AnonymousOmitEmptyPtrHead: "StructFieldPtrAnonymousHeadOmitEmpty",
|
||||||
|
AnonymousStringTagHead: "StructFieldAnonymousHeadStringTag",
|
||||||
|
AnonymousStringTagPtrHead: "StructFieldPtrAnonymousHeadStringTag",
|
||||||
}
|
}
|
||||||
headTypes := []headType{base}
|
headTypes := []headType{base}
|
||||||
for _, prim := range primitiveTypesUpper {
|
for _, prim := range primitiveTypesUpper {
|
||||||
|
@ -266,6 +319,10 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
OmitEmptyPtrHead: fmt.Sprintf("%s%s", base.OmitEmptyPtrHead, prim),
|
OmitEmptyPtrHead: fmt.Sprintf("%s%s", base.OmitEmptyPtrHead, prim),
|
||||||
AnonymousOmitEmptyHead: fmt.Sprintf("%s%s", base.AnonymousOmitEmptyHead, prim),
|
AnonymousOmitEmptyHead: fmt.Sprintf("%s%s", base.AnonymousOmitEmptyHead, prim),
|
||||||
AnonymousOmitEmptyPtrHead: fmt.Sprintf("%s%s", base.AnonymousOmitEmptyPtrHead, 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 {
|
for _, typ := range headTypes {
|
||||||
|
@ -278,24 +335,31 @@ func (t opType) fieldToOmitEmptyField() opType {
|
||||||
OmitEmptyPtrHead: fmt.Sprintf("%sIndent", typ.OmitEmptyPtrHead),
|
OmitEmptyPtrHead: fmt.Sprintf("%sIndent", typ.OmitEmptyPtrHead),
|
||||||
AnonymousOmitEmptyHead: fmt.Sprintf("%sIndent", typ.AnonymousOmitEmptyHead),
|
AnonymousOmitEmptyHead: fmt.Sprintf("%sIndent", typ.AnonymousOmitEmptyHead),
|
||||||
AnonymousOmitEmptyPtrHead: fmt.Sprintf("%sIndent", typ.AnonymousOmitEmptyPtrHead),
|
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{
|
baseField := fieldType{
|
||||||
Field: "StructField",
|
Field: "StructField",
|
||||||
OmitEmptyField: "StructFieldOmitEmpty",
|
OmitEmptyField: "StructFieldOmitEmpty",
|
||||||
|
StringTagField: "StructFieldStringTag",
|
||||||
}
|
}
|
||||||
fieldTypes := []fieldType{baseField}
|
fieldTypes := []fieldType{baseField}
|
||||||
for _, prim := range primitiveTypesUpper {
|
for _, prim := range primitiveTypesUpper {
|
||||||
fieldTypes = append(fieldTypes, fieldType{
|
fieldTypes = append(fieldTypes, fieldType{
|
||||||
Field: fmt.Sprintf("%s%s", baseField.Field, prim),
|
Field: fmt.Sprintf("%s%s", baseField.Field, prim),
|
||||||
OmitEmptyField: fmt.Sprintf("%s%s", baseField.OmitEmptyField, prim),
|
OmitEmptyField: fmt.Sprintf("%s%s", baseField.OmitEmptyField, prim),
|
||||||
|
StringTagField: fmt.Sprintf("%s%s", baseField.StringTagField, prim),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, typ := range fieldTypes {
|
for _, typ := range fieldTypes {
|
||||||
fieldTypes = append(fieldTypes, fieldType{
|
fieldTypes = append(fieldTypes, fieldType{
|
||||||
Field: fmt.Sprintf("%sIndent", typ.Field),
|
Field: fmt.Sprintf("%sIndent", typ.Field),
|
||||||
OmitEmptyField: fmt.Sprintf("%sIndent", typ.OmitEmptyField),
|
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