Add some missing Float cases

This commit is contained in:
Dave Cunningham 2015-01-28 12:53:34 -05:00
parent 045e23e55f
commit 18c26cb2eb
5 changed files with 22 additions and 4 deletions

View File

@ -82,6 +82,8 @@ func addrToSchema(addr []string, schemaMap map[string]*Schema) []*Schema {
fallthrough
case TypeInt:
fallthrough
case TypeFloat:
fallthrough
case TypeString:
if len(addr) > 0 {
return nil

View File

@ -41,10 +41,10 @@ func (r *DiffFieldReader) ReadField(address []string) (FieldReadResult, error) {
switch schema.Type {
case TypeBool:
fallthrough
case TypeFloat:
fallthrough
case TypeInt:
fallthrough
case TypeFloat:
fallthrough
case TypeString:
return r.readPrimitive(address, schema)
case TypeList:

View File

@ -23,10 +23,10 @@ func (r *MapFieldReader) ReadField(address []string) (FieldReadResult, error) {
switch schema.Type {
case TypeBool:
fallthrough
case TypeFloat:
fallthrough
case TypeInt:
fallthrough
case TypeFloat:
fallthrough
case TypeString:
return r.readPrimitive(address, schema)
case TypeList:

View File

@ -78,6 +78,8 @@ func (w *MapFieldWriter) set(addr []string, value interface{}) error {
fallthrough
case TypeInt:
fallthrough
case TypeFloat:
fallthrough
case TypeString:
return w.setPrimitive(addr, value, schema)
case TypeList:
@ -235,6 +237,11 @@ func (w *MapFieldWriter) setPrimitive(
if err := mapstructure.Decode(v, &n); err != nil {
return fmt.Errorf("%s: %s", k, err)
}
case TypeFloat:
var n float64
if err := mapstructure.Decode(v, &n); err != nil {
return fmt.Errorf("%s: %s", k, err)
}
set = strconv.FormatInt(int64(n), 10)
default:

View File

@ -78,6 +78,7 @@ type Schema struct {
//
// TypeBool - bool
// TypeInt - int
// TypeFloat - float64
// TypeString - string
// TypeList - []interface{}
// TypeMap - map[string]interface{}
@ -406,6 +407,8 @@ func (m schemaMap) Input(
fallthrough
case TypeInt:
fallthrough
case TypeFloat:
fallthrough
case TypeString:
value, err = m.inputString(input, k, v)
default:
@ -1084,6 +1087,12 @@ func (m schemaMap) validatePrimitive(
if err := mapstructure.WeakDecode(raw, &n); err != nil {
return nil, []error{err}
}
case TypeFloat:
// Verify that we can parse this as an int
var n float64
if err := mapstructure.WeakDecode(raw, &n); err != nil {
return nil, []error{err}
}
case TypeString:
// Verify that we can parse this as a string
var n string