Handle patternProperties with a single element
This commit is contained in:
parent
5e9f28cc05
commit
0b18cdd7be
1 changed files with 14 additions and 1 deletions
|
@ -83,6 +83,16 @@ func generateStruct(schema *jsonschema.Schema, root *jsonschema.Schema) jen.Code
|
||||||
return jen.Struct(fields...)
|
return jen.Struct(fields...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func singlePatternProp(schema *jsonschema.Schema) *jsonschema.Schema {
|
||||||
|
if len(schema.PatternProperties) != 1 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for _, prop := range schema.PatternProperties {
|
||||||
|
return &prop
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func generateSchemaType(schema *jsonschema.Schema, root *jsonschema.Schema) jen.Code {
|
func generateSchemaType(schema *jsonschema.Schema, root *jsonschema.Schema) jen.Code {
|
||||||
if schema == nil {
|
if schema == nil {
|
||||||
return jen.Interface()
|
return jen.Interface()
|
||||||
|
@ -104,12 +114,15 @@ func generateSchemaType(schema *jsonschema.Schema, root *jsonschema.Schema) jen.
|
||||||
case jsonschema.TypeInteger:
|
case jsonschema.TypeInteger:
|
||||||
return jen.Int64()
|
return jen.Int64()
|
||||||
case jsonschema.TypeObject:
|
case jsonschema.TypeObject:
|
||||||
if schema.AdditionalProperties != nil && schema.AdditionalProperties.IsFalse() && len(schema.PatternProperties) == 0 {
|
noAdditionalProps := schema.AdditionalProperties != nil && schema.AdditionalProperties.IsFalse()
|
||||||
|
if noAdditionalProps && len(schema.PatternProperties) == 0 {
|
||||||
if refName != "" {
|
if refName != "" {
|
||||||
return jen.Id(formatId(refName))
|
return jen.Id(formatId(refName))
|
||||||
} else {
|
} else {
|
||||||
return generateStruct(schema, root)
|
return generateStruct(schema, root)
|
||||||
}
|
}
|
||||||
|
} else if patternProp := singlePatternProp(schema); noAdditionalProps && patternProp != nil {
|
||||||
|
return jen.Map(jen.String()).Add(generateSchemaType(patternProp, root))
|
||||||
} else {
|
} else {
|
||||||
return jen.Map(jen.String()).Add(generateSchemaType(schema.AdditionalProperties, root))
|
return jen.Map(jen.String()).Add(generateSchemaType(schema.AdditionalProperties, root))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue