From baa7c890d0c31270901cc992d4f0fc720110a9df Mon Sep 17 00:00:00 2001 From: Cosmin Apreutesei Date: Wed, 3 Nov 2021 20:21:54 +0200 Subject: [PATCH] unimportant --- prettycjson.lua | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 prettycjson.lua diff --git a/prettycjson.lua b/prettycjson.lua new file mode 100644 index 0000000..953ec08 --- /dev/null +++ b/prettycjson.lua @@ -0,0 +1,50 @@ + +--prettycjson 1.5 from https://github.com/bungle/lua-resty-prettycjson. +--Copyright (c) 2015 — 2016, Aapo Talvensaari. BSD license. + +local cjson = require'cjson.safe' +local cat = table.concat +local rep = string.rep + +return function(dt, lf, id, ac) + local s, e = cjson.encode(dt) + if not s then return s, e end + lf, id, ac = lf or '\n', id or '\t', ac or ' ' + local i, j, k, n, r, p, q = 1, 0, 0, #s, {}, nil, nil + local al = ac:sub(-1) == '\n' + for x = 1, n do + local c = s:sub(x, x) + if not q and (c == '{' or c == '[') then + r[i] = p == ':' and c..lf or rep(id, j)..c..lf + j = j + 1 + elseif not q and (c == '}' or c == ']') then + j = j - 1 + if p == '{' or p == '[' then + i = i - 1 + r[i] = rep(id, j)..p..c + else + r[i] = lf..rep(id, j)..c + end + elseif not q and c == ',' then + r[i] = c..lf + k = -1 + elseif not q and c == ':' then + r[i] = c..ac + if al then + i = i + 1 + r[i] = rep(id, j) + end + else + if c == '\'' and p ~= '\\' then + q = not q and true or nil + end + if j ~= k then + r[i] = rep(id, j) + i, k = i + 1, j + end + r[i] = c + end + p, i = c, i + 1 + end + return cat(r) +end