aboutsummaryrefslogtreecommitdiff
path: root/tests/lua2json.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lua2json.lua')
-rwxr-xr-xtests/lua2json.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/lua2json.lua b/tests/lua2json.lua
new file mode 100755
index 0000000..ebe7380
--- /dev/null
+++ b/tests/lua2json.lua
@@ -0,0 +1,42 @@
1#!/usr/bin/env lua
2
3-- usage: lua2json.lua [lua_file]
4--
5-- Eg:
6-- echo '{ "testing" }' | ./lua2json.lua
7-- ./lua2json.lua test.lua
8
9local json = require "cjson"
10local misc = require "cjson-misc"
11
12function get_lua_table(s)
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
31 if func == nil then
32 error("Invalid syntax. Failed to parse Lua table.")
33 end
34 func()
35
36 return env.data
37end
38
39local t = get_lua_table(misc.file_load(arg[1]))
40print(json.encode(t))
41
42-- vi:ai et sw=4 ts=4: