Comparison

util/json.lua @ 6785:bf1f09a5bcf7

util.json: Remove use of newproxy
author Kim Alvefur <zash@zash.se>
date Fri, 13 Mar 2015 21:11:33 +0100
parent 5776:bd0ff8ae98a8
child 7235:ee1f7e1e548c
comparison
equal deleted inserted replaced
6784:4da860edc27c 6785:bf1f09a5bcf7
11 local s_char = string.char; 11 local s_char = string.char;
12 local tostring, tonumber = tostring, tonumber; 12 local tostring, tonumber = tostring, tonumber;
13 local pairs, ipairs = pairs, ipairs; 13 local pairs, ipairs = pairs, ipairs;
14 local next = next; 14 local next = next;
15 local error = error; 15 local error = error;
16 local newproxy, getmetatable, setmetatable = newproxy, getmetatable, setmetatable; 16 local getmetatable, setmetatable = getmetatable, setmetatable;
17 local print = print; 17 local print = print;
18 18
19 local has_array, array = pcall(require, "util.array"); 19 local has_array, array = pcall(require, "util.array");
20 local array_mt = has_array and getmetatable(array()) or {}; 20 local array_mt = has_array and getmetatable(array()) or {};
21 21
22 --module("json") 22 --module("json")
23 local json = {}; 23 local json = {};
24 24
25 local null = newproxy and newproxy(true) or {}; 25 local null = setmetatable({}, { __tostring = function() return "null"; end; });
26 if getmetatable and getmetatable(null) then
27 getmetatable(null).__tostring = function() return "null"; end;
28 end
29 json.null = null; 26 json.null = null;
30 27
31 local escapes = { 28 local escapes = {
32 ["\""] = "\\\"", ["\\"] = "\\\\", ["\b"] = "\\b", 29 ["\""] = "\\\"", ["\\"] = "\\\\", ["\b"] = "\\b",
33 ["\f"] = "\\f", ["\n"] = "\\n", ["\r"] = "\\r", ["\t"] = "\\t"}; 30 ["\f"] = "\\f", ["\n"] = "\\n", ["\r"] = "\\r", ["\t"] = "\\t"};