refactored data-types to reduce plugin sizes
This commit is contained in:
+9
-6
@@ -11,6 +11,9 @@ import (
|
||||
"strings"
|
||||
|
||||
"git.portale-stac.it/go-pkg/expr/kern"
|
||||
"git.portale-stac.it/go-pkg/expr/types/array"
|
||||
"git.portale-stac.it/go-pkg/expr/types/dict"
|
||||
"git.portale-stac.it/go-pkg/expr/types/str"
|
||||
)
|
||||
|
||||
type dictIterMode int
|
||||
@@ -22,7 +25,7 @@ const (
|
||||
)
|
||||
|
||||
type DictIterator struct {
|
||||
a *kern.DictType
|
||||
a *dict.DictType
|
||||
count int64
|
||||
index int64
|
||||
keys []any
|
||||
@@ -67,7 +70,7 @@ func (it *DictIterator) makeKeys(m map[any]any, sort sortType) {
|
||||
}
|
||||
}
|
||||
|
||||
func NewDictIterator(dict *kern.DictType, args []any) (it *DictIterator, err error) {
|
||||
func NewDictIterator(dict *dict.DictType, args []any) (it *DictIterator, err error) {
|
||||
var sortType = sortTypeNone
|
||||
var s string
|
||||
var argAny any
|
||||
@@ -78,7 +81,7 @@ func NewDictIterator(dict *kern.DictType, args []any) (it *DictIterator, err err
|
||||
} else {
|
||||
argAny = "default"
|
||||
}
|
||||
if s, err = kern.ToGoString(argAny, "sort type"); err == nil {
|
||||
if s, err = str.ToGoString(argAny, "sort type"); err == nil {
|
||||
switch strings.ToLower(s) {
|
||||
case "a", "asc":
|
||||
sortType = sortTypeAsc
|
||||
@@ -99,7 +102,7 @@ func NewDictIterator(dict *kern.DictType, args []any) (it *DictIterator, err err
|
||||
argAny = "default"
|
||||
}
|
||||
|
||||
if s, err = kern.ToGoString(argAny, "iteration mode"); err == nil {
|
||||
if s, err = str.ToGoString(argAny, "iteration mode"); err == nil {
|
||||
switch strings.ToLower(s) {
|
||||
case "k", "key", "keys":
|
||||
dictIt.iterMode = dictIterModeKeys
|
||||
@@ -124,7 +127,7 @@ func NewDictIterator(dict *kern.DictType, args []any) (it *DictIterator, err err
|
||||
}
|
||||
|
||||
func NewMapIterator(m map[any]any) (it *DictIterator) {
|
||||
it = &DictIterator{a: (*kern.DictType)(&m), count: 0, index: -1, keys: nil}
|
||||
it = &DictIterator{a: (*dict.DictType)(&m), count: 0, index: -1, keys: nil}
|
||||
it.makeKeys(m, sortTypeNone)
|
||||
return
|
||||
}
|
||||
@@ -190,7 +193,7 @@ func (it *DictIterator) Current() (item any, err error) {
|
||||
case dictIterModeItems:
|
||||
a := *(it.a)
|
||||
pair := []any{it.keys[it.index], a[it.keys[it.index]]}
|
||||
item = kern.NewList(pair)
|
||||
item = array.NewList(pair)
|
||||
}
|
||||
} else {
|
||||
err = io.EOF
|
||||
|
||||
Reference in New Issue
Block a user