Documentation
¶
Overview ¶
Utilities for converting, manipulating, and iterating over maps
Index ¶
- Variables
- func Append(maps ...map[string]interface{}) map[string]interface{}
- func Apply(input interface{}, fn ApplyFunc) map[string]interface{}
- func Autotype(input interface{}) map[string]interface{}
- func CoalesceMap(data map[string]interface{}, fieldJoiner string) (map[string]interface{}, error)
- func CoalesceMapTyped(data map[string]interface{}, fieldJoiner string, typePrefixSeparator string) (map[string]interface{}, []error)
- func Compact(input map[string]interface{}) (map[string]interface{}, error)
- func DeepCopy(input interface{}) map[string]interface{}
- func DeepGet(data interface{}, path []string, fallbacks ...interface{}) interface{}
- func DeepGetBool(data interface{}, path []string) bool
- func DeepGetString(data interface{}, path []string) string
- func DeepJoin(input interface{}, innerJoiner string, outerJoiner string, ...) string
- func DeepSet(data interface{}, path []string, value interface{}) interface{}
- func DiffuseMap(data map[string]interface{}, fieldJoiner string) (map[string]interface{}, error)
- func DiffuseMapTyped(data map[string]interface{}, fieldJoiner string, typePrefixSeparator string) (map[string]interface{}, []error)
- func Get(data interface{}, key string, fallback ...interface{}) interface{}
- func Join(input interface{}, innerJoiner string, outerJoiner string) string
- func Keys(input interface{}) []interface{}
- func MapValues(input interface{}) []interface{}
- func Merge(first interface{}, second interface{}) (map[string]interface{}, error)
- func Pluck(sliceOfMaps interface{}, key []string) []interface{}
- func Set(data interface{}, key interface{}, value interface{}) error
- func Split(input string, innerJoiner string, outerJoiner string) map[string]interface{}
- func StringKeys(input interface{}) []string
- func Stringify(input map[string]interface{}) map[string]string
- func StructFromMap(input map[string]interface{}, populate interface{}) error
- func TaggedStructFromMap(input interface{}, populate interface{}, tagname string) error
- func TaggedStructFromMapFunc(input interface{}, populate interface{}, tagname string, ...) error
- func Walk(input interface{}, walkFn WalkFunc) error
- type ApplyFunc
- type ConversionFunc
- type Map
- func (self *Map) Auto(key string, fallbacks ...interface{}) interface{}
- func (self *Map) Bool(key string) bool
- func (self *Map) Bytes(key string) []byte
- func (self *Map) Duration(key string, fallbacks ...interface{}) time.Duration
- func (self *Map) Float(key string, fallbacks ...interface{}) float64
- func (self *Map) Get(key string, fallbacks ...interface{}) typeutil.Variant
- func (self *Map) Int(key string, fallbacks ...interface{}) int64
- func (self *Map) Map(key string) map[typeutil.Variant]typeutil.Variant
- func (self *Map) MapNative() map[string]interface{}
- func (self *Map) MarshalJSON() ([]byte, error)
- func (self *Map) Set(key string, value interface{}) typeutil.Variant
- func (self *Map) Slice(key string) []typeutil.Variant
- func (self *Map) String(key string, fallbacks ...interface{}) string
- func (self *Map) Time(key string, fallbacks ...interface{}) time.Time
- func (self *Map) Value() interface{}
- type WalkFunc
Constants ¶
This section is empty.
Variables ¶
var SkipDescendants = errors.New("skip descendants")
var UnmarshalStructTag string = `maputil`
Functions ¶
func CoalesceMap ¶
Take a deeply-nested map and return a flat (non-nested) map with keys whose intermediate tiers are joined with fieldJoiner
func CoalesceMapTyped ¶
func CoalesceMapTyped(data map[string]interface{}, fieldJoiner string, typePrefixSeparator string) (map[string]interface{}, []error)
Take a deeply-nested map and return a flat (non-nested) map with keys whose intermediate tiers are joined with fieldJoiner Additionally, values will be converted to strings and keys will be prefixed with the datatype of the value
func DeepGetBool ¶
func DeepGetString ¶
func DeepJoin ¶
func DeepJoin(input interface{}, innerJoiner string, outerJoiner string, nestedSeparator string) string
Join the given map, using innerJoiner to join keys and values, and outerJoiner to join the resulting key-value lines.
func DiffuseMap ¶
Take a flat (non-nested) map keyed with fields joined on fieldJoiner and return a deeply-nested map
func DiffuseMapTyped ¶
func DiffuseMapTyped(data map[string]interface{}, fieldJoiner string, typePrefixSeparator string) (map[string]interface{}, []error)
Take a flat (non-nested) map keyed with fields joined on fieldJoiner and return a deeply-nested map
func Join ¶
Join the given map, using innerJoiner to join keys and values, and outerJoiner to join the resulting key-value lines.
func Keys ¶
func Keys(input interface{}) []interface{}
Return an interface slice of the keys of the given map.
func MapValues ¶
func MapValues(input interface{}) []interface{}
Return the values from the given map.
func Split ¶
Split the given string, first on outerJoiner to form key-value lines, then each line on innerJoiner. Populates a map and returns the result.
func StringKeys ¶
func StringKeys(input interface{}) []string
Return a slice of strings representing the keys of the given map.
func StructFromMap ¶
Same as TaggedStructFromMapFunc, but no value conversion and uses the "maputil" struct tag.
func TaggedStructFromMap ¶
Same as TaggedStructFromMapFunc, but does not perform any value conversion.
func TaggedStructFromMapFunc ¶
func TaggedStructFromMapFunc(input interface{}, populate interface{}, tagname string, converter ConversionFunc) error
Take an input map, and populate the struct instance pointed to by "populate". Use the values of the tagname tag to inform which map keys should be used to fill struct fields, and if a Conversion function is given, that function will be used to allow values to be converted in preparation for becoming struct field values.
Types ¶
type ConversionFunc ¶
type Map ¶
type Map struct {
// contains filtered or unexported fields
}
A Map object (or "M" object) is a utility struct that makes it straightforward to work with interface data types that contain map-like data (has a reflect.Kind equal to reflect.Map).
func M ¶
func M(data interface{}) *Map
Create a new Variant map object from the given value (which should be a map of some kind).
func (*Map) Get ¶
Retrieve a value from the Map by the given dot.separated key, or return a fallback value. Return values are a typeutil.Variant, which can be easily coerced into various types.
func (*Map) Map ¶
Return the value at key as a Map. If the resulting value is nil or not a map type, a null Map will be returned. All values retrieved from a null Map will return that type's zero value.
func (*Map) MarshalJSON ¶
func (*Map) Slice ¶
Return the value at key as a slice. Scalar values will be returned as a slice containing only that value.