3
0

Make ql parser init more flexible

This commit is contained in:
Tomaž Jerman
2022-09-29 13:07:21 +02:00
parent 92324e1495
commit 5fa45e0cf7
2 changed files with 10 additions and 5 deletions

View File

@@ -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

View File

@@ -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