diff options
author | Wim <wim@42.be> | 2020-01-09 21:52:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-09 21:52:19 +0100 |
commit | 9d84d6dd643c4017074e81465671cd9b25f9539a (patch) | |
tree | 8a767f91d655a6cf21d476e4fb7aa6fd8a952df8 /vendor/github.com/d5/tengo/stdlib/json.go | |
parent | 0f708daf2d14dcca261ef98cc698a1b1f2a6aa74 (diff) | |
download | matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.gz matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.bz2 matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.zip |
Update to tengo v2 (#976)
Diffstat (limited to 'vendor/github.com/d5/tengo/stdlib/json.go')
-rw-r--r-- | vendor/github.com/d5/tengo/stdlib/json.go | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/vendor/github.com/d5/tengo/stdlib/json.go b/vendor/github.com/d5/tengo/stdlib/json.go deleted file mode 100644 index f913dc48..00000000 --- a/vendor/github.com/d5/tengo/stdlib/json.go +++ /dev/null @@ -1,126 +0,0 @@ -package stdlib - -import ( - "bytes" - gojson "encoding/json" - - "github.com/d5/tengo/objects" - "github.com/d5/tengo/stdlib/json" -) - -var jsonModule = map[string]objects.Object{ - "decode": &objects.UserFunction{Name: "decode", Value: jsonDecode}, - "encode": &objects.UserFunction{Name: "encode", Value: jsonEncode}, - "indent": &objects.UserFunction{Name: "encode", Value: jsonIndent}, - "html_escape": &objects.UserFunction{Name: "html_escape", Value: jsonHTMLEscape}, -} - -func jsonDecode(args ...objects.Object) (ret objects.Object, err error) { - if len(args) != 1 { - return nil, objects.ErrWrongNumArguments - } - - switch o := args[0].(type) { - case *objects.Bytes: - v, err := json.Decode(o.Value) - if err != nil { - return &objects.Error{Value: &objects.String{Value: err.Error()}}, nil - } - return v, nil - case *objects.String: - v, err := json.Decode([]byte(o.Value)) - if err != nil { - return &objects.Error{Value: &objects.String{Value: err.Error()}}, nil - } - return v, nil - default: - return nil, objects.ErrInvalidArgumentType{ - Name: "first", - Expected: "bytes/string", - Found: args[0].TypeName(), - } - } -} - -func jsonEncode(args ...objects.Object) (ret objects.Object, err error) { - if len(args) != 1 { - return nil, objects.ErrWrongNumArguments - } - - b, err := json.Encode(args[0]) - if err != nil { - return &objects.Error{Value: &objects.String{Value: err.Error()}}, nil - } - - return &objects.Bytes{Value: b}, nil -} - -func jsonIndent(args ...objects.Object) (ret objects.Object, err error) { - if len(args) != 3 { - return nil, objects.ErrWrongNumArguments - } - - prefix, ok := objects.ToString(args[1]) - if !ok { - return nil, objects.ErrInvalidArgumentType{ - Name: "prefix", - Expected: "string(compatible)", - Found: args[1].TypeName(), - } - } - - indent, ok := objects.ToString(args[2]) - if !ok { - return nil, objects.ErrInvalidArgumentType{ - Name: "indent", - Expected: "string(compatible)", - Found: args[2].TypeName(), - } - } - - switch o := args[0].(type) { - case *objects.Bytes: - var dst bytes.Buffer - err := gojson.Indent(&dst, o.Value, prefix, indent) - if err != nil { - return &objects.Error{Value: &objects.String{Value: err.Error()}}, nil - } - return &objects.Bytes{Value: dst.Bytes()}, nil - case *objects.String: - var dst bytes.Buffer - err := gojson.Indent(&dst, []byte(o.Value), prefix, indent) - if err != nil { - return &objects.Error{Value: &objects.String{Value: err.Error()}}, nil - } - return &objects.Bytes{Value: dst.Bytes()}, nil - default: - return nil, objects.ErrInvalidArgumentType{ - Name: "first", - Expected: "bytes/string", - Found: args[0].TypeName(), - } - } -} - -func jsonHTMLEscape(args ...objects.Object) (ret objects.Object, err error) { - if len(args) != 1 { - return nil, objects.ErrWrongNumArguments - } - - switch o := args[0].(type) { - case *objects.Bytes: - var dst bytes.Buffer - gojson.HTMLEscape(&dst, o.Value) - return &objects.Bytes{Value: dst.Bytes()}, nil - case *objects.String: - var dst bytes.Buffer - gojson.HTMLEscape(&dst, []byte(o.Value)) - return &objects.Bytes{Value: dst.Bytes()}, nil - default: - return nil, objects.ErrInvalidArgumentType{ - Name: "first", - Expected: "bytes/string", - Found: args[0].TypeName(), - } - } -} |