helpers.go: two new functions: EvalStream() and EvalFile()

This commit is contained in:
Celestino Amoroso 2024-04-27 09:46:03 +02:00
parent 723976b37e
commit 9dbf472630

View File

@ -6,6 +6,8 @@ package expr
import (
"fmt"
"io"
"os"
"strings"
)
@ -59,3 +61,24 @@ func EvalStringV(source string, args []Arg) (result any, err error) {
}
return
}
func EvalStream(ctx ExprContext, r io.Reader) (result any, err error) {
var tree *ast
scanner := NewScanner(r, DefaultTranslations())
parser := NewParser(ctx)
if tree, err = parser.Parse(scanner); err == nil {
result, err = tree.Eval(ctx)
}
return
}
func EvalFile(ctx ExprContext, filePath string) (result any, err error) {
var fh *os.File
if fh, err = os.Open(filePath); err != nil {
return nil, err
}
defer fh.Close()
result, err = EvalStream(ctx, fh)
return
}