diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-09-20 10:35:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-20 10:35:44 -0400 |
commit | cc6a85bcde1e7068105502dbc21afbb51b3e70d5 (patch) | |
tree | 78456f2a1f7d03185620e579320bbcc54867c8b4 /vendor/github.com/mitchellh/mapstructure/mapstructure.go | |
parent | f7d7fc2c8c70ca36cf2e9441cd1a8c40c042ba11 (diff) | |
parent | 50981245706f7ab8dd57ddaf7efb39a171bbd97b (diff) | |
download | podman-cc6a85bcde1e7068105502dbc21afbb51b3e70d5.tar.gz podman-cc6a85bcde1e7068105502dbc21afbb51b3e70d5.tar.bz2 podman-cc6a85bcde1e7068105502dbc21afbb51b3e70d5.zip |
Merge pull request #11652 from vrothberg/vendor-common
vendor c/common@main
Diffstat (limited to 'vendor/github.com/mitchellh/mapstructure/mapstructure.go')
-rw-r--r-- | vendor/github.com/mitchellh/mapstructure/mapstructure.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/mitchellh/mapstructure/mapstructure.go index 3643901f5..dcee0f2d6 100644 --- a/vendor/github.com/mitchellh/mapstructure/mapstructure.go +++ b/vendor/github.com/mitchellh/mapstructure/mapstructure.go @@ -192,7 +192,7 @@ type DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface // source and target types. type DecodeHookFuncKind func(reflect.Kind, reflect.Kind, interface{}) (interface{}, error) -// DecodeHookFuncRaw is a DecodeHookFunc which has complete access to both the source and target +// DecodeHookFuncValue is a DecodeHookFunc which has complete access to both the source and target // values. type DecodeHookFuncValue func(from reflect.Value, to reflect.Value) (interface{}, error) @@ -258,6 +258,11 @@ type DecoderConfig struct { // The tag name that mapstructure reads for field names. This // defaults to "mapstructure" TagName string + + // MatchName is the function used to match the map key to the struct + // field name or tag. Defaults to `strings.EqualFold`. This can be used + // to implement case-sensitive tag values, support snake casing, etc. + MatchName func(mapKey, fieldName string) bool } // A Decoder takes a raw interface value and turns it into structured @@ -376,6 +381,10 @@ func NewDecoder(config *DecoderConfig) (*Decoder, error) { config.TagName = "mapstructure" } + if config.MatchName == nil { + config.MatchName = strings.EqualFold + } + result := &Decoder{ config: config, } @@ -1340,7 +1349,7 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e continue } - if strings.EqualFold(mK, fieldName) { + if d.config.MatchName(mK, fieldName) { rawMapKey = dataValKey rawMapVal = dataVal.MapIndex(dataValKey) break |