You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
HTML
47 lines
1.4 KiB
HTML
{{/*
|
|
|
|
For complex objects, example content is sometimes attached to the
|
|
object's individual properties (and subproperties...), so to get
|
|
a complete example for the whole object we need to iterate through
|
|
its properties (and subproperties...) and assemble them.
|
|
|
|
That's what this template does.
|
|
|
|
*/}}
|
|
|
|
{{ $this_object := . }}
|
|
|
|
{{ $example := $this_object.example }}
|
|
|
|
{{ if not $example }}
|
|
|
|
{{ if eq $this_object.type "object" }}
|
|
{{ $example = dict }}
|
|
|
|
{{ range $key, $property := $this_object.properties}}
|
|
{{ $this_property_example := partial "json-schema/resolve-example" $property }}
|
|
{{ if $this_property_example }}
|
|
{{ $example = merge (dict $key $this_property_example) $example }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ else if eq $this_object.type "array" }}
|
|
|
|
{{/* the "items" within an array can either be an object (where we have a
|
|
list of items which match the schema), or a list (for tuple
|
|
validation, where each item has a different schema).
|
|
|
|
TODO: support tuple validation here.
|
|
*/}}
|
|
{{ if reflect.IsMap $this_object.items }}
|
|
{{ $items_example := partial "json-schema/resolve-example" $this_object.items }}
|
|
{{ if $items_example }}
|
|
{{ $example = slice $items_example }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ end }}
|
|
|
|
{{ return $example }}
|