moved a subset of source file to the kern package

This commit is contained in:
2026-04-27 19:43:37 +02:00
parent f100adead3
commit 4d910dd069
107 changed files with 2080 additions and 1380 deletions
+18 -16
View File
@@ -9,6 +9,8 @@ import (
"io"
"slices"
"strings"
"git.portale-stac.it/go-pkg/expr/kern"
)
type dictIterMode int
@@ -20,7 +22,7 @@ const (
)
type DictIterator struct {
a *DictType
a *kern.DictType
count int
index int
keys []any
@@ -65,7 +67,7 @@ func (it *DictIterator) makeKeys(m map[any]any, sort sortType) {
}
}
func NewDictIterator(dict *DictType, args []any) (it *DictIterator, err error) {
func NewDictIterator(dict *kern.DictType, args []any) (it *DictIterator, err error) {
var sortType = sortTypeNone
var s string
var argAny any
@@ -76,7 +78,7 @@ func NewDictIterator(dict *DictType, args []any) (it *DictIterator, err error) {
} else {
argAny = "default"
}
if s, err = ToGoString(argAny, "sort type"); err == nil {
if s, err = kern.ToGoString(argAny, "sort type"); err == nil {
switch strings.ToLower(s) {
case "a", "asc":
sortType = sortTypeAsc
@@ -97,7 +99,7 @@ func NewDictIterator(dict *DictType, args []any) (it *DictIterator, err error) {
argAny = "default"
}
if s, err = ToGoString(argAny, "iteration mode"); err == nil {
if s, err = kern.ToGoString(argAny, "iteration mode"); err == nil {
switch strings.ToLower(s) {
case "k", "key", "keys":
dictIt.iterMode = dictIterModeKeys
@@ -119,7 +121,7 @@ func NewDictIterator(dict *DictType, args []any) (it *DictIterator, err error) {
}
func NewMapIterator(m map[any]any) (it *DictIterator) {
it = &DictIterator{a: (*DictType)(&m), count: 0, index: -1, keys: nil}
it = &DictIterator{a: (*kern.DictType)(&m), count: 0, index: -1, keys: nil}
it.makeKeys(m, sortTypeNone)
return
}
@@ -138,31 +140,31 @@ func (it *DictIterator) TypeName() string {
func (it *DictIterator) HasOperation(name string) bool {
// yes := name == NextName || name == ResetName || name == IndexName || name == CountName || name == CurrentName
yes := slices.Contains([]string{NextName, ResetName, IndexName, CountName, CurrentName, CleanName, KeyName, ValueName}, name)
yes := slices.Contains([]string{kern.NextName, kern.ResetName, kern.IndexName, kern.CountName, kern.CurrentName, kern.CleanName, kern.KeyName, kern.ValueName}, name)
return yes
}
func (it *DictIterator) CallOperation(name string, args map[string]any) (v any, err error) {
switch name {
case NextName:
case kern.NextName:
v, err = it.Next()
case ResetName:
case kern.ResetName:
err = it.Reset()
case CleanName:
case kern.CleanName:
err = it.Clean()
case IndexName:
case kern.IndexName:
v = int64(it.Index())
case CurrentName:
case kern.CurrentName:
v, err = it.Current()
case CountName:
case kern.CountName:
v = it.count
case KeyName:
case kern.KeyName:
if it.index >= 0 && it.index < len(it.keys) {
v = it.keys[it.index]
} else {
err = io.EOF
}
case ValueName:
case kern.ValueName:
if it.index >= 0 && it.index < len(it.keys) {
a := *(it.a)
v = a[it.keys[it.index]]
@@ -170,7 +172,7 @@ func (it *DictIterator) CallOperation(name string, args map[string]any) (v any,
err = io.EOF
}
default:
err = errNoOperation(name)
err = kern.ErrNoOperation(name)
}
return
}
@@ -186,7 +188,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 = newList(pair)
item = kern.NewList(pair)
}
} else {
err = io.EOF