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 {
|
||||
return len(data)
|
||||
} else if data, ok := val.Val.([]byte); ok {
|
||||
// FIXME
|
||||
return len(data)
|
||||
} else if data, ok := val.Val.(string); ok {
|
||||
return len(data)
|
||||
}
|
||||
|
||||
@ -139,6 +140,19 @@ func (val *Value) SliceFromTo(from, to int) *Value {
|
||||
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
|
||||
func (val *Value) Get(idx int) *Value {
|
||||
if d, ok := val.Val.([]interface{}); ok {
|
||||
|
Loading…
Reference in New Issue
Block a user