support decoding bools
This commit is contained in:
parent
0d84234df1
commit
bc2f8e57ee
21
decoder.go
21
decoder.go
@ -51,6 +51,8 @@ func (d *decoder) decode(name string, n ast.Node, result reflect.Value) error {
|
||||
}
|
||||
|
||||
switch k.Kind() {
|
||||
case reflect.Bool:
|
||||
return d.decodeBool(name, n, result)
|
||||
case reflect.Int:
|
||||
return d.decodeInt(name, n, result)
|
||||
case reflect.Interface:
|
||||
@ -74,6 +76,22 @@ func (d *decoder) decode(name string, n ast.Node, result reflect.Value) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *decoder) decodeBool(name string, raw ast.Node, result reflect.Value) error {
|
||||
n, ok := raw.(ast.LiteralNode)
|
||||
if !ok {
|
||||
return fmt.Errorf("%s: not a literal type", name)
|
||||
}
|
||||
|
||||
switch n.Type {
|
||||
case ast.ValueTypeBool:
|
||||
result.Set(reflect.ValueOf(n.Value.(bool)))
|
||||
default:
|
||||
return fmt.Errorf("%s: unknown type %s", name, n.Type)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *decoder) decodeInt(name string, raw ast.Node, result reflect.Value) error {
|
||||
n, ok := raw.(ast.LiteralNode)
|
||||
if !ok {
|
||||
@ -129,6 +147,9 @@ func (d *decoder) decodeInterface(name string, raw ast.Node, result reflect.Valu
|
||||
set = reflect.ValueOf(result)
|
||||
case ast.LiteralNode:
|
||||
switch n.Type {
|
||||
case ast.ValueTypeBool:
|
||||
var result bool
|
||||
set = reflect.Indirect(reflect.New(reflect.TypeOf(result)))
|
||||
case ast.ValueTypeInt:
|
||||
var result int
|
||||
set = reflect.Indirect(reflect.New(reflect.TypeOf(result)))
|
||||
|
Loading…
Reference in New Issue
Block a user