Files
libopenapi/datamodel/low/3.0/example.go
Dave Shanley 2793504a92 Starting to firm up with design choices
lots more of the model coming online now.
2022-08-06 15:54:07 -04:00

48 lines
951 B
Go

package v3
import (
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/utils"
"gopkg.in/yaml.v3"
)
const (
ExamplesLabel = "examples"
ExampleLabel = "example"
ValueLabel = "value"
)
type Example struct {
Summary low.NodeReference[string]
Description low.NodeReference[string]
Value low.NodeReference[any]
ExternalValue low.NodeReference[string]
Extensions map[low.KeyReference[string]]low.ValueReference[any]
}
func (ex *Example) Build(root *yaml.Node) error {
// extract extensions
extensionMap, err := ExtractExtensions(root)
if err != nil {
return err
}
ex.Extensions = extensionMap
// extract value
_, ln, vn := utils.FindKeyNodeFull(ValueLabel, root.Content)
if vn != nil {
var n map[string]interface{}
err = vn.Decode(&n)
if err != nil {
return err
}
ex.Value = low.NodeReference[any]{
Value: n,
KeyNode: ln,
ValueNode: vn,
}
}
return nil
}