Skip to content

Commit d80f94c

Browse files
committed
add script
1 parent 8adb5fe commit d80f94c

File tree

3 files changed

+706
-3
lines changed

3 files changed

+706
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ require (
1111
github.com/creack/pty v1.1.18
1212
github.com/d5/tengo/v2 v2.16.1
1313
github.com/dgraph-io/badger/v4 v4.2.0
14+
github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7
1415
github.com/eclipse/paho.golang v0.21.0
1516
github.com/eclipse/paho.mqtt.golang v1.4.3
1617
github.com/fergusstrange/embedded-postgres v1.29.0
@@ -88,7 +89,6 @@ require (
8889
github.com/davecgh/go-spew v1.1.1 // indirect
8990
github.com/dgraph-io/ristretto v0.1.1 // indirect
9091
github.com/dlclark/regexp2 v1.11.0 // indirect
91-
github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 // indirect
9292
github.com/dustin/go-humanize v1.0.0 // indirect
9393
github.com/emirpasic/gods v1.18.1 // indirect
9494
github.com/fatih/color v1.13.0 // indirect

mods/tql/fm_script.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ func (x *Node) fmBridge(name string) *bridgeName {
3737
}
3838

3939
func (node *Node) fmScript(args ...any) (any, error) {
40+
var js_is_es6 bool
41+
if flag, ok := node.pragma["es6"]; ok {
42+
if b, err := strconv.ParseBool(flag); err == nil {
43+
js_is_es6 = b
44+
}
45+
}
46+
4047
if len(args) == 1 {
4148
text, ok := args[0].(string)
4249
if !ok {
@@ -53,7 +60,7 @@ func (node *Node) fmScript(args ...any) (any, error) {
5360
}
5461
case string:
5562
switch name {
56-
case "js", "javascript":
63+
case "js", "javascript", "es6":
5764
initCode, mainCode := "", ""
5865
if len(args) == 2 { // SCRIPT("js", "main")
5966
if str, ok := args[1].(string); !ok {
@@ -75,7 +82,11 @@ func (node *Node) fmScript(args ...any) (any, error) {
7582
} else {
7683
goto syntaxErr
7784
}
78-
return node.fmScriptOtto(initCode, mainCode)
85+
if name == "es6" || (js_is_es6 && name == "js") {
86+
return node.fmScriptGoja(initCode, mainCode)
87+
} else {
88+
return node.fmScriptOtto(initCode, mainCode)
89+
}
7990
case "tengo":
8091
if text, ok := args[1].(string); !ok {
8192
goto syntaxErr

0 commit comments

Comments
 (0)