From b0dbcd332270b77fe41c91e6c4c69d1ac11eeaa1 Mon Sep 17 00:00:00 2001 From: Mark Pulford Date: Tue, 3 Jan 2012 21:33:59 +1030 Subject: Add support for Lua 5.2 environments to lua2json --- tests/lua2json.lua | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'tests') 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 @@ -- -- Eg: -- echo '{ "testing" }' | ./lua2json.lua --- ./lua2json.lua lua_data.lua +-- ./lua2json.lua test.lua local json = require "cjson" local misc = require "cjson-misc" -function get_lua_table(file) - local func = loadstring("data = " .. misc.file_load(file)) +function get_lua_table(s) + local env = {} + local func + + env.json = {} + env.json.null = json.null + env.null = json.null + s = "data = " .. s + + -- Use setfenv() if it exists, otherwise assume Lua 5.2 load() exists + if _G.setfenv then + func = loadstring(s) + if func then + setfenv(func, env) + end + else + func = load(s, nil, nil, env) + end + if func == nil then - error("Invalid syntax? Lua table required.") + error("Invalid syntax. Failed to parse Lua table.") end - - local env = {} - func = setfenv(func, env) func() - return env.data + return env.data end -local t = get_lua_table(arg[1]) +local t = get_lua_table(misc.file_load(arg[1])) print(json.encode(t)) -- vi:ai et sw=4 ts=4: -- cgit v1.2.3-55-g6feb