ledisdb/vendor/github.com/glendc/gopher-json/cjson.go

70 lines
1.8 KiB
Go

package json
import "github.com/yuin/gopher-lua"
const (
// CJsonLibName defines the name for the cjson lib
CJsonLibName = "cjson"
// https://www.kyne.com.au/~mark/software/lua-cjson-manual.html
cjsonLibVersion = "0.1.0"
)
// OpenCJSON opens the cjson lib
func OpenCJSON(l *lua.LState) int {
mod := l.RegisterModule(CJsonLibName, cjsonFuncs).(*lua.LTable)
mod.RawSetString("_NAME", lua.LString(CJsonLibName))
mod.RawSetString("_VERSION", lua.LString(cjsonLibVersion))
mod.RawSetString("null", lua.LNil)
l.Push(mod)
return 1
}
var cjsonFuncs = map[string]lua.LGFunction{
"decode": apiDecode,
"decode_invalid_numbers": apiDecodeInvalidNumbers,
"decode_max_depth": apiDecodeMaxDepth,
"encode": apiEncode,
"encode_invalid_numbers": apiEncodeInvalidNumbers,
"encode_keep_buffer": apiEncodeKeepBuffer,
"encode_max_depth": apiEncodeMaxDepth,
"encode_number_precision": apiEncodeNumberPrecision,
"encode_sparse_array": apiEncodeSparseArray,
}
// settings functions
func apiDecodeInvalidNumbers(l *lua.LState) int {
l.RaiseError("decode_invalid_numbers is not supported")
return 0
}
func apiDecodeMaxDepth(l *lua.LState) int {
l.RaiseError("decode_max_depth is not supported")
return 0
}
func apiEncodeInvalidNumbers(l *lua.LState) int {
l.RaiseError("encode_invalid_numbers is not supported")
return 0
}
func apiEncodeKeepBuffer(l *lua.LState) int {
l.RaiseError("encode_keep_buffer is not supported")
return 0
}
func apiEncodeMaxDepth(l *lua.LState) int {
l.RaiseError("encode_max_depth is not supported")
return 0
}
func apiEncodeNumberPrecision(l *lua.LState) int {
l.RaiseError("encode_number_precision is not supported")
return 0
}
func apiEncodeSparseArray(l *lua.LState) int {
l.RaiseError("encode_sparse_array is not supported")
return 0
}