From 5fa45e0cf7326446e3e418d4bcd8abe0b71295ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Thu, 29 Sep 2022 13:07:21 +0200 Subject: [PATCH] Make ql parser init more flexible --- pkg/dal/filter.go | 2 ++ pkg/dal/runner_gval.go | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/dal/filter.go b/pkg/dal/filter.go index 449b07652..5e7f9a265 100644 --- a/pkg/dal/filter.go +++ b/pkg/dal/filter.go @@ -51,6 +51,8 @@ func toInternalFilter(f filter.Filter) (out internalFilter, err error) { // Parse expression for later use if out.expression != "" { pp := newQlParser(nil) + pp := newQlParser() + out.expParsed, err = pp.Parse(out.expression) if err != nil { return diff --git a/pkg/dal/runner_gval.go b/pkg/dal/runner_gval.go index 43f333558..548c04f59 100644 --- a/pkg/dal/runner_gval.go +++ b/pkg/dal/runner_gval.go @@ -215,10 +215,10 @@ var ( ) // newConverterGval initializes a new gval exp. converter -func newConverterGval() converterGval { +func newConverterGval(ii ...ql.IdentHandler) converterGval { if globalGvalConverter.parser == nil { globalGvalConverter = converterGval{ - parser: newQlParser(nil), + parser: newQlParser(ii...), } } @@ -285,13 +285,16 @@ func newGval(expr string) (gval.Evaluable, error) { ).NewEvaluable(expr) } -func newQlParser(onIdent ql.IdentHandler) *ql.Parser { +func newQlParser(onIdent ...ql.IdentHandler) *ql.Parser { pp := ql.NewParser() pp.OnIdent = func(ident ql.Ident) (_ ql.Ident, err error) { ident.Value = NormalizeAttrNames(ident.Value) - if onIdent != nil { - ident, err = onIdent(ident) + for _, oi := range onIdent { + ident, err = oi(ident) + if err != nil { + return + } } return ident, err