26 lines
502 B
Go
26 lines
502 B
Go
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// iter-factory.go
|
|
package expr
|
|
|
|
func NewIterator(value any) (it Iterator, err error) {
|
|
if value == nil {
|
|
return NewArrayIterator([]any{}), nil
|
|
}
|
|
|
|
switch v := value.(type) {
|
|
case *ListType:
|
|
it = NewListIterator(v, nil)
|
|
case *DictType:
|
|
it, err = NewDictIterator(v, nil)
|
|
case []any:
|
|
it = NewArrayIterator(v)
|
|
case Iterator:
|
|
it = v
|
|
default:
|
|
it = NewArrayIterator([]any{value})
|
|
}
|
|
return
|
|
}
|