2018-10-06 03:27:34 +02:00
|
|
|
package arrays
|
|
|
|
|
2018-10-25 03:30:05 +02:00
|
|
|
import (
|
|
|
|
"github.com/MontFerret/ferret/pkg/runtime/collections"
|
|
|
|
"github.com/MontFerret/ferret/pkg/runtime/core"
|
|
|
|
"github.com/MontFerret/ferret/pkg/runtime/values"
|
|
|
|
)
|
2018-10-06 03:27:34 +02:00
|
|
|
|
|
|
|
func NewLib() map[string]core.Function {
|
|
|
|
return map[string]core.Function{
|
|
|
|
"APPEND": Append,
|
|
|
|
"FIRST": First,
|
|
|
|
"FLATTEN": Flatten,
|
|
|
|
"INTERSECTION": Intersection,
|
|
|
|
"LAST": Last,
|
|
|
|
"MINUS": Minus,
|
|
|
|
"NTH": Nth,
|
|
|
|
"OUTERSECTION": Outersection,
|
|
|
|
"POP": Pop,
|
|
|
|
"POSITION": Position,
|
|
|
|
"PUSH": Push,
|
|
|
|
"REMOVE_NTH": RemoveNth,
|
|
|
|
"REMOVE_VALUE": RemoveValue,
|
|
|
|
"REMOVE_VALUES": RemoveValues,
|
|
|
|
"REVERSE": Reverse,
|
|
|
|
"SHIFT": Shift,
|
|
|
|
"SLICE": Slice,
|
|
|
|
"SORTED": Sorted,
|
|
|
|
"SORTED_UNIQUE": SortedUnique,
|
|
|
|
"UNION": Union,
|
|
|
|
"UNION_DISTINCT": UnionDistinct,
|
|
|
|
"UNIQUE": Unique,
|
|
|
|
"UNSHIFT": Unshift,
|
|
|
|
}
|
|
|
|
}
|
2018-10-25 03:30:05 +02:00
|
|
|
|
|
|
|
func toArray(iterator collections.Iterator) (core.Value, error) {
|
|
|
|
arr := values.NewArray(10)
|
|
|
|
|
|
|
|
for iterator.HasNext() {
|
|
|
|
ds, err := iterator.Next()
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return values.None, err
|
|
|
|
}
|
|
|
|
|
|
|
|
arr.Push(ds.Get(collections.DefaultValueVar))
|
|
|
|
}
|
|
|
|
|
|
|
|
return arr, nil
|
|
|
|
}
|