encoder: Break apart the encoder into distinct modules + add call encoding
[luajson.git] / src / json / encode / object.lua
blob24452c85cb837dc591138ed20cab774cc5fa818e
1 local jsonencode = require("json.encode")
3 local pairs = pairs
4 local assert = assert
6 local type = type
7 local tostring = tostring
9 local table_concat = table.concat
11 local strings = require("json.encode.strings")
13 module("json.encode.object")
15 function encode(tab, options)
16 local encodeValue = jsonencode.encodeValue
17 local encodeString = strings.encode
18 local retVal = {}
19 -- Is table
20 for i, v in pairs(tab) do
21 local ti = type(i)
22 assert(ti == 'string' or ti == 'number' or ti == 'boolean', "Invalid object index type: " .. ti)
23 i = encodeString(tostring(i), options)
25 retVal[#retVal + 1] = i .. ':' .. encodeValue(v, options)
26 end
27 return '{' .. table_concat(retVal, ',') .. '}'
28 end