...

Package yamlmap

import "github.com/cli/go-gh/v2/internal/yamlmap"
Overview
Index

Overview ▾

Package yamlmap is a wrapper of gopkg.in/yaml.v3 for interacting with yaml data as if it were a map.

Variables

var ErrInvalidFormat = errors.New("invalid format")
var ErrInvalidYaml = errors.New("invalid yaml")
var ErrNotFound = errors.New("not found")

func Marshal

func Marshal(m *Map) ([]byte, error)

type Map

type Map struct {
    *yaml.Node
}

func MapValue

func MapValue() *Map

func NullValue

func NullValue() *Map

func StringValue

func StringValue(value string) *Map

func Unmarshal

func Unmarshal(data []byte) (*Map, error)

func (*Map) AddEntry

func (m *Map) AddEntry(key string, value *Map)

func (*Map) Empty

func (m *Map) Empty() bool

func (*Map) FindEntry

func (m *Map) FindEntry(key string) (*Map, error)

func (*Map) IsModified

func (m *Map) IsModified() bool

Traverse map using BFS to searach for any nodes that have been modified.

func (*Map) Keys

func (m *Map) Keys() []string

func (*Map) RemoveEntry

func (m *Map) RemoveEntry(key string) error

func (*Map) SetEntry

func (m *Map) SetEntry(key string, value *Map)

func (*Map) SetModified

func (m *Map) SetModified()

Note: This is a hack to introduce the concept of modified/unmodified on top of gopkg.in/yaml.v3. This works by setting the Value property of a MappingNode to a specific value and then later checking if the node's Value property is that specific value. When a MappingNode gets output as a string the Value property is not used, thus changing it has no impact for our purposes.

func (*Map) SetUnmodified

func (m *Map) SetUnmodified()

Traverse map using BFS to set all nodes as unmodified.

func (*Map) String

func (m *Map) String() string