refactored data-types to reduce plugin sizes
This commit is contained in:
+7
-4
@@ -7,6 +7,9 @@ package expr
|
||||
import (
|
||||
"git.portale-stac.it/go-pkg/expr/kern"
|
||||
"git.portale-stac.it/go-pkg/expr/scan"
|
||||
"git.portale-stac.it/go-pkg/expr/types"
|
||||
"git.portale-stac.it/go-pkg/expr/types/dict"
|
||||
"git.portale-stac.it/go-pkg/expr/types/str"
|
||||
)
|
||||
|
||||
// -------- dict term
|
||||
@@ -23,16 +26,16 @@ func newDictTerm(args map[any]*scan.Term) *scan.Term {
|
||||
|
||||
// -------- dict func
|
||||
func evalDict(ctx kern.ExprContext, opTerm *scan.Term) (v any, err error) {
|
||||
dict, _ := opTerm.Value().(map[any]*scan.Term)
|
||||
items := make(kern.DictType, len(dict))
|
||||
for key, tree := range dict {
|
||||
dt, _ := opTerm.Value().(map[any]*scan.Term)
|
||||
items := make(dict.DictType, len(dt))
|
||||
for key, tree := range dt {
|
||||
var param any
|
||||
if param, err = tree.Compute(ctx); err != nil {
|
||||
break
|
||||
}
|
||||
var keyValue any
|
||||
if keyValue, err = (key.(*scan.Term)).Compute(ctx); err == nil {
|
||||
if kern.IsInteger(keyValue) || kern.IsString(keyValue) {
|
||||
if types.IsInteger(keyValue) || str.IsString(keyValue) {
|
||||
items[keyValue] = param
|
||||
} else {
|
||||
err = key.(*scan.Term).Errorf("dict key can be integer or string, got %s", kern.TypeName(keyValue))
|
||||
|
||||
Reference in New Issue
Block a user