Rename the main function to Decode
diff --git a/mapstructure.go b/mapstructure.go
index 49362eb..eda04fd 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -7,9 +7,9 @@
"strings"
)
-// MapToStruct takes a map and uses reflection to convert it into the
+// Decode takes a map and uses reflection to convert it into the
// given Go native structure. val must be a pointer to a struct.
-func MapToStruct(m map[string]interface{}, rawVal interface{}) error {
+func Decode(m map[string]interface{}, rawVal interface{}) error {
val := reflect.ValueOf(rawVal)
if val.Kind() != reflect.Ptr {
return errors.New("val must be a pointer")
@@ -90,7 +90,9 @@
}
// At this point we know that data is a map with string keys, so
- // we can properly cast it here.
+ // we can properly cast it here. We use the "Interface()" value because
+ // this gets us the proper interface whether or not data is a pointer
+ // or not.
m, ok := dataVal.Interface().(map[string]interface{})
if !ok {
panic("data could not be cast as map[string]interface{}")
diff --git a/mapstructure_test.go b/mapstructure_test.go
index 82ee210..f420fc5 100644
--- a/mapstructure_test.go
+++ b/mapstructure_test.go
@@ -24,7 +24,7 @@
}
var result Basic
- err := MapToStruct(input, &result)
+ err := Decode(input, &result)
if err != nil {
t.Errorf("got an err: %s", err.Error())
t.FailNow()
@@ -60,7 +60,7 @@
}
var result Nested
- err := MapToStruct(input, &result)
+ err := Decode(input, &result)
if err != nil {
t.Errorf("got an err: %s", err.Error())
t.FailNow()
@@ -100,7 +100,7 @@
}
var result Nested
- err := MapToStruct(input, &result)
+ err := Decode(input, &result)
if err != nil {
t.Errorf("got an err: %s", err.Error())
t.FailNow()
@@ -135,7 +135,7 @@
}
var result Basic
- err := MapToStruct(input, &result)
+ err := Decode(input, &result)
if err == nil {
t.Error("error should exist")
t.FailNow()
@@ -149,7 +149,7 @@
func TestNonPtrValue(t *testing.T) {
t.Parallel()
- err := MapToStruct(map[string]interface{}{}, Basic{})
+ err := Decode(map[string]interface{}{}, Basic{})
if err == nil {
t.Error("error should exist")
t.FailNow()
@@ -164,7 +164,7 @@
t.Parallel()
result := 42
- err := MapToStruct(map[string]interface{}{}, &result)
+ err := Decode(map[string]interface{}{}, &result)
if err == nil {
t.Error("error should exist")
t.FailNow()