Optimized encoding of arrays containing nil values
authorSteven Barth <steven@midlink.org>
Fri, 29 Aug 2008 13:44:33 +0000 (13:44 +0000)
committerSteven Barth <steven@midlink.org>
Fri, 29 Aug 2008 13:44:33 +0000 (13:44 +0000)
Optimized inline documentation

libs/json/luasrc/json.lua

index 3f66b8332fb19e688952cf95e0a97af575543508..5d1abcf484a92efabfab923a7612e293623d864d 100644 (file)
@@ -56,6 +56,7 @@ local next      = next
 local getmetatable = getmetatable
 
 --- LuCI JSON-Library
+-- @cstyle     instance
 module "luci.json"
 
 --- Null replacement function
@@ -64,16 +65,15 @@ function null()
        return null
 end
 
---- JSON-Encoder
--- @class      module
--- @cstyle     instance
--- @name       luci.json.Encoder
-Encoder = util.class()
-
---- Creates a new Encoder.
+--- Create a new JSON-Encoder.
+-- @class      function
+-- @name       Encoder
 -- @param data                 Lua-Object to be encoded.
 -- @param buffersize   Blocksize of returned data source.
 -- @param fastescape   Use non-standard escaping (don't escape control chars) 
+-- @return JSON-Encoder
+Encoder = util.class()
+
 function Encoder.__init__(self, data, buffersize, fastescape)
        self.data = data
        self.buffersize = buffersize or 512
@@ -184,10 +184,10 @@ function Encoder.parse_iter(self, obj)
                local first = true
                
                if type(obj) == "table" then
-                       for i, entry in pairs(obj) do
+                       for i=1, #obj do
                                first = first or self:put(",")
                                first = first and nil
-                               self:dispatch(entry)
+                               self:dispatch(obj[i])
                        end
                else
                        for entry in obj do
@@ -211,14 +211,13 @@ Encoder.parsers = {
 } 
 
 
---- JSON-Decoder
--- @class      module
--- @cstyle     instance
--- @name       luci.json.Decoder
+--- Create a new JSON-Decoder.
+-- @class      function
+-- @name       Decoder
+-- @param customnull Use luci.json.null instead of nil for decoding null
+-- @return JSON-Decoder
 Decoder = util.class()
 
---- Create a new Decoder object.
--- @param customnull Use luci.json.null instead of nil
 function Decoder.__init__(self, customnull)
        self.cnull = customnull
        getmetatable(self).__call = Decoder.sink