forked from mirror/ledisdb
70 lines
1.8 KiB
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
|
||
|
}
|