This commit is contained in:
Prashanth Balasubramanian 2016-04-17 13:19:22 -07:00
parent d3a51031c3
commit 198a319fd6
1361 changed files with 239071 additions and 28102 deletions

View file

@ -1,11 +1,7 @@
// Package structs contains various utilities functions to work with structs.
package structs
import (
"fmt"
"reflect"
)
import "reflect"
var (
// DefaultTagName is the default tag name for struct fields which provides
@ -46,12 +42,6 @@ func New(s interface{}) *Struct {
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// A tag value with the content of "string" uses the stringer to get the value. Example:
//
// // The value will be output of Animal's String() func.
// // Map will panic if Animal does not implement String().
// Field *Animal `structs:"field,string"`
//
// A tag value with the option of "omitnested" stops iterating further if the type
// is a struct. Example:
//
@ -104,24 +94,11 @@ func (s *Struct) Map() map[string]interface{} {
// map[string]interface{} too
n := New(val.Interface())
n.TagName = s.TagName
m := n.Map()
if len(m) == 0 {
finalVal = val.Interface()
} else {
finalVal = m
}
finalVal = n.Map()
} else {
finalVal = val.Interface()
}
if tagOpts.Has("string") {
s, ok := val.Interface().(fmt.Stringer)
if ok {
out[name] = s.String()
}
continue
}
out[name] = finalVal
}
@ -171,14 +148,6 @@ func (s *Struct) Values() []interface{} {
}
}
if tagOpts.Has("string") {
s, ok := val.Interface().(fmt.Stringer)
if ok {
t = append(t, s.String())
}
continue
}
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
// look out for embedded structs, and convert them to a
// []interface{} to be added to the final values slice