...
This commit is contained in:
parent
ea31b462d8
commit
c2f2c344c2
1 changed files with 24 additions and 2 deletions
26
tengo.go
26
tengo.go
|
@ -63,11 +63,12 @@ func (pp *Tengo) Eval(
|
|||
const retHead = `
|
||||
context := {}
|
||||
pp := immutable({
|
||||
filepath: __pp_filepath__,
|
||||
fpath: __pp_filepath__,
|
||||
printf : __pp_printf__,
|
||||
print : __pp_print__,
|
||||
println : __pp_println__,
|
||||
write_raw : __pp_write_raw__
|
||||
write_raw : __pp_write_raw__,
|
||||
include: __pp_include__
|
||||
})
|
||||
`
|
||||
|
||||
|
@ -116,6 +117,27 @@ func (pp *Tengo) Eval(
|
|||
pp.preCompile(ctx, script)
|
||||
}
|
||||
|
||||
script.Add("__pp_include__", &tengo.UserFunction{
|
||||
Value: func(args ...tengo.Object) (tengo.Object, error){
|
||||
if len(args) < 1 {
|
||||
return nil, tengo.ErrWrongNumArguments
|
||||
}
|
||||
format, ok := tengo.ToString(args[0])
|
||||
if !ok {
|
||||
return nil, tengo.ErrInvalidArgumentType{
|
||||
Expected: "string",
|
||||
}
|
||||
}
|
||||
gargs := make([]any, len(args) - 1)
|
||||
for i := range gargs {
|
||||
gargs[i] = tengo.ToInterface(args[i+1])
|
||||
//fmt.Printf("shit: %q\n", gargs[i])
|
||||
}
|
||||
fmt.Fprintf(&retBuf, format, gargs...)
|
||||
return nil, nil
|
||||
//return tengo.FromInterface([]byte(str))
|
||||
},
|
||||
})
|
||||
script.Add("__pp_filepath__", filePath)
|
||||
script.Add("__pp_printf__", &tengo.UserFunction{
|
||||
Value: func(args ...tengo.Object) (tengo.Object, error){
|
||||
|
|
Loading…
Reference in a new issue