Type checking
This commit is contained in:
parent
9bc5c4a0c5
commit
059ad35215
@ -36,7 +36,8 @@ func (val *Value) Len() int {
|
|||||||
if data, ok := val.Val.([]interface{}); ok {
|
if data, ok := val.Val.([]interface{}); ok {
|
||||||
return len(data)
|
return len(data)
|
||||||
} else if data, ok := val.Val.([]byte); ok {
|
} else if data, ok := val.Val.([]byte); ok {
|
||||||
// FIXME
|
return len(data)
|
||||||
|
} else if data, ok := val.Val.(string); ok {
|
||||||
return len(data)
|
return len(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,6 +140,19 @@ func (val *Value) SliceFromTo(from, to int) *Value {
|
|||||||
return NewValue(slice[from:to])
|
return NewValue(slice[from:to])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO More type checking methods
|
||||||
|
func (val *Value) IsSlice() bool {
|
||||||
|
return val.Type() == reflect.Slice
|
||||||
|
}
|
||||||
|
|
||||||
|
func (val *Value) IsStr() bool {
|
||||||
|
return val.Type() == reflect.String
|
||||||
|
}
|
||||||
|
|
||||||
|
func (val *Value) IsEmpty() bool {
|
||||||
|
return (val.IsSlice() || val.IsStr()) && val.Len() == 0
|
||||||
|
}
|
||||||
|
|
||||||
// Threat the value as a slice
|
// Threat the value as a slice
|
||||||
func (val *Value) Get(idx int) *Value {
|
func (val *Value) Get(idx int) *Value {
|
||||||
if d, ok := val.Val.([]interface{}); ok {
|
if d, ok := val.Val.([]interface{}); ok {
|
||||||
|
Loading…
Reference in New Issue
Block a user