moved scanner sources to package 'scan'
This commit is contained in:
+13
-12
@@ -9,30 +9,31 @@ import (
|
||||
"io"
|
||||
|
||||
"git.portale-stac.it/go-pkg/expr/kern"
|
||||
"git.portale-stac.it/go-pkg/expr/scan"
|
||||
)
|
||||
|
||||
//-------- map term
|
||||
|
||||
func newFilterTerm(tk *Token) (inst *term) {
|
||||
return &term{
|
||||
tk: *tk,
|
||||
children: make([]*term, 0, 2),
|
||||
position: posInfix,
|
||||
priority: priIterOp,
|
||||
evalFunc: evalFilter,
|
||||
func newFilterTerm(tk *scan.Token) (inst *scan.Term) {
|
||||
return &scan.Term{
|
||||
Tk: *tk,
|
||||
Children: make([]*scan.Term, 0, 2),
|
||||
Position: scan.PosInfix,
|
||||
Priority: scan.PriIterOp,
|
||||
EvalFunc: evalFilter,
|
||||
}
|
||||
}
|
||||
|
||||
func evalFilter(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
func evalFilter(ctx kern.ExprContext, opTerm *scan.Term) (v any, err error) {
|
||||
var leftValue, rightValue any
|
||||
var it kern.Iterator
|
||||
var item any
|
||||
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
if err = opTerm.CheckOperands(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, err = opTerm.children[0].Compute(ctx); err != nil {
|
||||
if leftValue, err = opTerm.Children[0].Compute(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -45,7 +46,7 @@ func evalFilter(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
ctx.SetVar("_", item)
|
||||
ctx.SetVar("__", it.Index())
|
||||
ctx.SetVar("_#", it.Count())
|
||||
if rightValue, err = opTerm.children[1].Compute(ctx); err == nil {
|
||||
if rightValue, err = opTerm.Children[1].Compute(ctx); err == nil {
|
||||
if success, valid := kern.ToBool(rightValue); valid {
|
||||
if success {
|
||||
values.AppendItem(item)
|
||||
@@ -70,5 +71,5 @@ func evalFilter(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
|
||||
// init
|
||||
func init() {
|
||||
registerTermConstructor(SymKwFilter, newFilterTerm)
|
||||
scan.RegisterTermConstructor(scan.SymKwFilter, newFilterTerm)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user