mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-07-03 11:57:45 +00:00
Update vendor (#1560)
This commit is contained in:
54
vendor/github.com/d5/tengo/v2/README.md
generated
vendored
54
vendor/github.com/d5/tengo/v2/README.md
generated
vendored
@ -4,7 +4,7 @@
|
||||
|
||||
# The Tengo Language
|
||||
|
||||
[](https://godoc.org/github.com/d5/tengo)
|
||||
[](https://godoc.org/github.com/d5/tengo/v2)
|
||||

|
||||
[](https://goreportcard.com/report/github.com/d5/tengo)
|
||||
|
||||
@ -53,19 +53,19 @@ fmt.println(sum("", [1, 2, 3])) // "123"
|
||||
|
||||
| | fib(35) | fibt(35) | Language (Type) |
|
||||
| :--- | ---: | ---: | :---: |
|
||||
| [**Tengo**](https://github.com/d5/tengo) | `2,931ms` | `4ms` | Tengo (VM) |
|
||||
| [go-lua](https://github.com/Shopify/go-lua) | `4,824ms` | `4ms` | Lua (VM) |
|
||||
| [GopherLua](https://github.com/yuin/gopher-lua) | `5,365ms` | `4ms` | Lua (VM) |
|
||||
| [goja](https://github.com/dop251/goja) | `5,533ms` | `5ms` | JavaScript (VM) |
|
||||
| [starlark-go](https://github.com/google/starlark-go) | `11,495ms` | `5ms` | Starlark (Interpreter) |
|
||||
| [Yaegi](https://github.com/containous/yaegi) | `15,645ms` | `12ms` | Yaegi (Interpreter) |
|
||||
| [gpython](https://github.com/go-python/gpython) | `16,322ms` | `5ms` | Python (Interpreter) |
|
||||
| [otto](https://github.com/robertkrimen/otto) | `73,093ms` | `10ms` | JavaScript (Interpreter) |
|
||||
| [Anko](https://github.com/mattn/anko) | `79,809ms` | `8ms` | Anko (Interpreter) |
|
||||
| [**Tengo**](https://github.com/d5/tengo) | `2,315ms` | `3ms` | Tengo (VM) |
|
||||
| [go-lua](https://github.com/Shopify/go-lua) | `4,028ms` | `3ms` | Lua (VM) |
|
||||
| [GopherLua](https://github.com/yuin/gopher-lua) | `4,409ms` | `3ms` | Lua (VM) |
|
||||
| [goja](https://github.com/dop251/goja) | `5,194ms` | `4ms` | JavaScript (VM) |
|
||||
| [starlark-go](https://github.com/google/starlark-go) | `6,954ms` | `3ms` | Starlark (Interpreter) |
|
||||
| [gpython](https://github.com/go-python/gpython) | `11,324ms` | `4ms` | Python (Interpreter) |
|
||||
| [Yaegi](https://github.com/containous/yaegi) | `11,715ms` | `10ms` | Yaegi (Interpreter) |
|
||||
| [otto](https://github.com/robertkrimen/otto) | `48,539ms` | `6ms` | JavaScript (Interpreter) |
|
||||
| [Anko](https://github.com/mattn/anko) | `52,821ms` | `6ms` | Anko (Interpreter) |
|
||||
| - | - | - | - |
|
||||
| Go | `53ms` | `3ms` | Go (Native) |
|
||||
| Lua | `1,612ms` | `3ms` | Lua (Native) |
|
||||
| Python | `2,632ms` | `23ms` | Python 2 (Native) |
|
||||
| Go | `47ms` | `2ms` | Go (Native) |
|
||||
| Lua | `756ms` | `2ms` | Lua (Native) |
|
||||
| Python | `1,907ms` | `14ms` | Python2 (Native) |
|
||||
|
||||
_* [fib(35)](https://github.com/d5/tengobench/blob/master/code/fib.tengo):
|
||||
Fibonacci(35)_
|
||||
@ -93,21 +93,18 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Tengo script code
|
||||
src := `
|
||||
each := func(seq, fn) {
|
||||
// create a new Script instance
|
||||
script := tengo.NewScript([]byte(
|
||||
`each := func(seq, fn) {
|
||||
for x in seq { fn(x) }
|
||||
}
|
||||
|
||||
sum := 0
|
||||
mul := 1
|
||||
each([a, b, c, d], func(x) {
|
||||
sum += x
|
||||
mul *= x
|
||||
})`
|
||||
|
||||
// create a new Script instance
|
||||
script := tengo.NewScript([]byte(src))
|
||||
sum += x
|
||||
mul *= x
|
||||
})`))
|
||||
|
||||
// set values
|
||||
_ = script.Add("a", 1)
|
||||
@ -128,6 +125,19 @@ each([a, b, c, d], func(x) {
|
||||
}
|
||||
```
|
||||
|
||||
Or, if you need to evaluate a simple expression, you can use [Eval](https://pkg.go.dev/github.com/d5/tengo/v2#Eval) function instead:
|
||||
|
||||
|
||||
```golang
|
||||
res, err := tengo.Eval(ctx,
|
||||
`input ? "success" : "fail"`,
|
||||
map[string]interface{}{"input": 1})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println(res) // "success"
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [Language Syntax](https://github.com/d5/tengo/blob/master/docs/tutorial.md)
|
||||
|
35
vendor/github.com/d5/tengo/v2/eval.go
generated
vendored
Normal file
35
vendor/github.com/d5/tengo/v2/eval.go
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
package tengo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Eval compiles and executes given expr with params, and returns an
|
||||
// evaluated value. expr must be an expression. Otherwise it will fail to
|
||||
// compile. Expression must not use or define variable "__res__" as it's
|
||||
// reserved for the internal usage.
|
||||
func Eval(
|
||||
ctx context.Context,
|
||||
expr string,
|
||||
params map[string]interface{},
|
||||
) (interface{}, error) {
|
||||
expr = strings.TrimSpace(expr)
|
||||
if expr == "" {
|
||||
return nil, fmt.Errorf("empty expression")
|
||||
}
|
||||
|
||||
script := NewScript([]byte(fmt.Sprintf("__res__ := (%s)", expr)))
|
||||
for pk, pv := range params {
|
||||
err := script.Add(pk, pv)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("script add: %w", err)
|
||||
}
|
||||
}
|
||||
compiled, err := script.RunContext(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("script run: %w", err)
|
||||
}
|
||||
return compiled.Get("__res__").Value(), nil
|
||||
}
|
Reference in New Issue
Block a user