mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-07 20:47:45 +00:00
chore: some cleanup
This commit is contained in:
@@ -200,8 +200,6 @@ func (n *NodeBuilder) add(key string, i int) {
|
|||||||
return lines[i] < lines[j]
|
return lines[i] < lines[j]
|
||||||
})
|
})
|
||||||
nodeEntry.Line = lines[0]
|
nodeEntry.Line = lines[0]
|
||||||
case reflect.Map:
|
|
||||||
panic("only ordered maps are supported")
|
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
y := value.Interface()
|
y := value.Interface()
|
||||||
nodeEntry.Line = 9999 + i
|
nodeEntry.Line = 9999 + i
|
||||||
@@ -330,11 +328,7 @@ func (n *NodeBuilder) AddYAMLNode(parent *yaml.Node, entry *nodes.NodeEntry) *ya
|
|||||||
val := strconv.FormatFloat(value.(float64), 'f', precision, 64)
|
val := strconv.FormatFloat(value.(float64), 'f', precision, 64)
|
||||||
valueNode = utils.CreateFloatNode(val)
|
valueNode = utils.CreateFloatNode(val)
|
||||||
valueNode.Line = line
|
valueNode.Line = line
|
||||||
case reflect.Map:
|
|
||||||
panic("only ordered maps are supported")
|
|
||||||
|
|
||||||
case reflect.Slice:
|
case reflect.Slice:
|
||||||
|
|
||||||
var rawNode yaml.Node
|
var rawNode yaml.Node
|
||||||
m := reflect.ValueOf(value)
|
m := reflect.ValueOf(value)
|
||||||
sl := utils.CreateEmptySequenceNode()
|
sl := utils.CreateEmptySequenceNode()
|
||||||
|
|||||||
@@ -21,10 +21,6 @@ type MapToYamlNoder interface {
|
|||||||
ToYamlNode(n NodeBuilder, l any) *yaml.Node
|
ToYamlNode(n NodeBuilder, l any) *yaml.Node
|
||||||
}
|
}
|
||||||
|
|
||||||
type hasKeyNode interface {
|
|
||||||
GetKeyNode() *yaml.Node
|
|
||||||
}
|
|
||||||
|
|
||||||
type hasValueNode interface {
|
type hasValueNode interface {
|
||||||
GetValueNode() *yaml.Node
|
GetValueNode() *yaml.Node
|
||||||
}
|
}
|
||||||
@@ -37,6 +33,7 @@ type findValueUntyped interface {
|
|||||||
FindValueUntyped(k string) any
|
FindValueUntyped(k string) any
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToYamlNode converts the ordered map to a yaml node ready for marshalling.
|
||||||
func (o *Map[K, V]) ToYamlNode(n NodeBuilder, l any) *yaml.Node {
|
func (o *Map[K, V]) ToYamlNode(n NodeBuilder, l any) *yaml.Node {
|
||||||
p := utils.CreateEmptyMapNode()
|
p := utils.CreateEmptyMapNode()
|
||||||
|
|
||||||
@@ -105,6 +102,7 @@ func findKeyNode(key string, m *yaml.Node) *yaml.Node {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindValueUntyped finds a value in the ordered map by key if the stored value for that key implements GetValueUntyped otherwise just returns the value.
|
||||||
func (o *Map[K, V]) FindValueUntyped(key string) any {
|
func (o *Map[K, V]) FindValueUntyped(key string) any {
|
||||||
for pair := First(o); pair != nil; pair = pair.Next() {
|
for pair := First(o); pair != nil; pair = pair.Next() {
|
||||||
var k any = pair.Key()
|
var k any = pair.Key()
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import (
|
|||||||
wk8orderedmap "github.com/wk8/go-ordered-map/v2"
|
wk8orderedmap "github.com/wk8/go-ordered-map/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Pair represents a key/value pair in an ordered map returned for iteration.
|
||||||
type Pair[K comparable, V any] interface {
|
type Pair[K comparable, V any] interface {
|
||||||
Key() K
|
Key() K
|
||||||
KeyPtr() *K
|
KeyPtr() *K
|
||||||
@@ -22,6 +23,7 @@ type Pair[K comparable, V any] interface {
|
|||||||
Next() Pair[K, V]
|
Next() Pair[K, V]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Map represents an ordered map where the key must be a comparable type, the ordering is based on insertion order.
|
||||||
type Map[K comparable, V any] struct {
|
type Map[K comparable, V any] struct {
|
||||||
*wk8orderedmap.OrderedMap[K, V]
|
*wk8orderedmap.OrderedMap[K, V]
|
||||||
}
|
}
|
||||||
@@ -37,14 +39,17 @@ func New[K comparable, V any]() *Map[K, V] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetKeyType returns the reflection type of the key.
|
||||||
func (o *Map[K, V]) GetKeyType() reflect.Type {
|
func (o *Map[K, V]) GetKeyType() reflect.Type {
|
||||||
return reflect.TypeOf(new(K))
|
return reflect.TypeOf(new(K))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetValueType returns the reflection type of the value.
|
||||||
func (o *Map[K, V]) GetValueType() reflect.Type {
|
func (o *Map[K, V]) GetValueType() reflect.Type {
|
||||||
return reflect.TypeOf(new(V))
|
return reflect.TypeOf(new(V))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetOrZero will return the value for the key if it exists, otherwise it will return the zero value for the value type.
|
||||||
func (o *Map[K, V]) GetOrZero(k K) V {
|
func (o *Map[K, V]) GetOrZero(k K) V {
|
||||||
v, ok := o.OrderedMap.Get(k)
|
v, ok := o.OrderedMap.Get(k)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -54,6 +59,7 @@ func (o *Map[K, V]) GetOrZero(k K) V {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// First returns the first pair in the map useful for iteration.
|
||||||
func (o *Map[K, V]) First() Pair[K, V] {
|
func (o *Map[K, V]) First() Pair[K, V] {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
@@ -93,6 +99,7 @@ func (o *Map[K, V]) IsZero() bool {
|
|||||||
return Len(o) == 0
|
return Len(o) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Next returns the next pair in the map when iterating.
|
||||||
func (p *wrapPair[K, V]) Next() Pair[K, V] {
|
func (p *wrapPair[K, V]) Next() Pair[K, V] {
|
||||||
next := p.Pair.Next()
|
next := p.Pair.Next()
|
||||||
if next == nil {
|
if next == nil {
|
||||||
@@ -103,18 +110,22 @@ func (p *wrapPair[K, V]) Next() Pair[K, V] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Key returns the key of the pair.
|
||||||
func (p *wrapPair[K, V]) Key() K {
|
func (p *wrapPair[K, V]) Key() K {
|
||||||
return p.Pair.Key
|
return p.Pair.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KeyPtr returns a pointer to the key of the pair.
|
||||||
func (p *wrapPair[K, V]) KeyPtr() *K {
|
func (p *wrapPair[K, V]) KeyPtr() *K {
|
||||||
return &p.Pair.Key
|
return &p.Pair.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Value returns the value of the pair.
|
||||||
func (p *wrapPair[K, V]) Value() V {
|
func (p *wrapPair[K, V]) Value() V {
|
||||||
return p.Pair.Value
|
return p.Pair.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValuePtr returns a pointer to the value of the pair.
|
||||||
func (p *wrapPair[K, V]) ValuePtr() *V {
|
func (p *wrapPair[K, V]) ValuePtr() *V {
|
||||||
return &p.Pair.Value
|
return &p.Pair.Value
|
||||||
}
|
}
|
||||||
@@ -183,6 +194,7 @@ func Cast[K comparable, V any](v any) *Map[K, V] {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SortAlpha sorts the map by keys in alphabetical order.
|
||||||
func SortAlpha[K comparable, V any](m *Map[K, V]) *Map[K, V] {
|
func SortAlpha[K comparable, V any](m *Map[K, V]) *Map[K, V] {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user