aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMark Pulford <mark@kyne.com.au>2012-01-03 21:33:59 +1030
committerMark Pulford <mark@kyne.com.au>2012-01-03 21:33:59 +1030
commitb0dbcd332270b77fe41c91e6c4c69d1ac11eeaa1 (patch)
tree55500cbca611296e3b0f4b094dc3f81bb8f25c39 /tests
parent32b57dac838d7cbece250aa8ce42b788750ba857 (diff)
downloadlua-cjson-b0dbcd332270b77fe41c91e6c4c69d1ac11eeaa1.tar.gz
lua-cjson-b0dbcd332270b77fe41c91e6c4c69d1ac11eeaa1.tar.bz2
lua-cjson-b0dbcd332270b77fe41c91e6c4c69d1ac11eeaa1.zip
Add support for Lua 5.2 environments to lua2json
Diffstat (limited to 'tests')
-rwxr-xr-xtests/lua2json.lua32
1 files changed, 23 insertions, 9 deletions
diff --git a/tests/lua2json.lua b/tests/lua2json.lua
index 3efd4af..ebe7380 100755
--- a/tests/lua2json.lua
+++ b/tests/lua2json.lua
@@ -4,25 +4,39 @@
4-- 4--
5-- Eg: 5-- Eg:
6-- echo '{ "testing" }' | ./lua2json.lua 6-- echo '{ "testing" }' | ./lua2json.lua
7-- ./lua2json.lua lua_data.lua 7-- ./lua2json.lua test.lua
8 8
9local json = require "cjson" 9local json = require "cjson"
10local misc = require "cjson-misc" 10local misc = require "cjson-misc"
11 11
12function get_lua_table(file) 12function get_lua_table(s)
13 local func = loadstring("data = " .. misc.file_load(file)) 13 local env = {}
14 local func
15
16 env.json = {}
17 env.json.null = json.null
18 env.null = json.null
19 s = "data = " .. s
20
21 -- Use setfenv() if it exists, otherwise assume Lua 5.2 load() exists
22 if _G.setfenv then
23 func = loadstring(s)
24 if func then
25 setfenv(func, env)
26 end
27 else
28 func = load(s, nil, nil, env)
29 end
30
14 if func == nil then 31 if func == nil then
15 error("Invalid syntax? Lua table required.") 32 error("Invalid syntax. Failed to parse Lua table.")
16 end 33 end
17
18 local env = {}
19 func = setfenv(func, env)
20 func() 34 func()
21 35
22 return env.data 36 return env.data
23end 37end
24 38
25local t = get_lua_table(arg[1]) 39local t = get_lua_table(misc.file_load(arg[1]))
26print(json.encode(t)) 40print(json.encode(t))
27 41
28-- vi:ai et sw=4 ts=4: 42-- vi:ai et sw=4 ts=4: