gluon-announce, ...: don't output empty lists where not appropriate
Always output empty objects or nothing at all where objects are expected, but no elements exist. Also remove a few unneeded "requires", a few basic modules are provided by announce.lua by default.
This commit is contained in:
		
							parent
							
								
									8375e82a38
								
							
						
					
					
						commit
						637df6b197
					
				| @ -3,6 +3,7 @@ | ||||
| module('gluon.announce', package.seeall) | ||||
| 
 | ||||
| fs = require 'luci.fs' | ||||
| json = require 'luci.json' | ||||
| uci = require('luci.model.uci').cursor() | ||||
| util = require 'luci.util' | ||||
| 
 | ||||
| @ -15,7 +16,7 @@ local function collect_entry(entry) | ||||
| end | ||||
| 
 | ||||
| function collect_dir(dir) | ||||
| 	local ret = {} | ||||
| 	local ret = { [json.null] = true } | ||||
| 
 | ||||
| 	for _, entry in ipairs(fs.dir(dir)) do | ||||
| 		if entry:sub(1, 1) ~= '.' then | ||||
|  | ||||
| @ -1,7 +1,3 @@ | ||||
| local json = require 'luci.json' | ||||
| local util = require 'luci.util' | ||||
| local fs = require 'nixio.fs' | ||||
| 
 | ||||
| local ifname_address_cache = {} | ||||
| 
 | ||||
| function ifname2address(ifname) | ||||
| @ -26,7 +22,7 @@ function batadv() | ||||
|     if mac1 ~= nil and mac1 == mac2 then | ||||
|       ifaddress = ifname2address(ifname) | ||||
|       if interfaces[ifaddress] == nil then | ||||
|         interfaces[ifaddress] = { neighbours = {} } | ||||
|         interfaces[ifaddress] = { neighbours = { [json.null] = true } } | ||||
|       end | ||||
| 
 | ||||
|       interfaces[ifaddress].neighbours[mac1] = { tq = tonumber(tq) | ||||
| @ -35,7 +31,9 @@ function batadv() | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   return interfaces | ||||
|   if next(interfaces) then | ||||
|     return interfaces | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| return batadv() | ||||
|  | ||||
| @ -1,6 +1,3 @@ | ||||
| local json = require 'luci.json' | ||||
| local util = require 'luci.util' | ||||
| local fs = require 'nixio.fs' | ||||
| local iwinfo = require 'iwinfo' | ||||
| 
 | ||||
| function neighbours(iface) | ||||
| @ -12,7 +9,9 @@ function neighbours(iface) | ||||
|                           } | ||||
|   end | ||||
| 
 | ||||
|   return stations | ||||
|   if next(stations) then | ||||
|     return stations | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| function interfaces() | ||||
| @ -38,4 +37,6 @@ for address, iface in pairs(interfaces()) do | ||||
|   wifi[address] = { neighbours = neighbours(iface) } | ||||
| end | ||||
| 
 | ||||
| return wifi | ||||
| if next(wifi) then | ||||
|   return wifi | ||||
| end | ||||
|  | ||||
| @ -48,5 +48,6 @@ end | ||||
| return { | ||||
|   wireless = nil_table(wireless), | ||||
|   tunnel = nil_table(tunnel), | ||||
|   other = nil_table(other) | ||||
|   other = nil_table(other), | ||||
|   [json.null] = true | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,36 @@ | ||||
| From: Matthias Schiffer <mschiffer@universe-factory.net> | ||||
| Date: Thu, 4 Jun 2015 21:03:24 +0200 | ||||
| Subject: luci-lib-json: ignore null keys to allow encoding empty objects | ||||
| 
 | ||||
| There is currently no way to encode an empty object {}, as empty tables are | ||||
| encoded as empty lists []. | ||||
| 
 | ||||
| With this patch, encode() will ignore table fields with the key json.null (which | ||||
| doesn't make sense anyways). This allows adding a field with key json.null to | ||||
| force encoding it as an object. | ||||
| 
 | ||||
| Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> | ||||
| 
 | ||||
| diff --git a/libs/json/luasrc/json.lua b/libs/json/luasrc/json.lua
 | ||||
| index 8dbaf91..11a5608 100644
 | ||||
| --- a/libs/json/luasrc/json.lua
 | ||||
| +++ b/libs/json/luasrc/json.lua
 | ||||
| @@ -205,11 +205,13 @@ function Encoder.parse_iter(self, obj)
 | ||||
|  		local first = true | ||||
|   | ||||
|  		for key, entry in pairs(obj) do | ||||
| -			first = first or self:put(",")
 | ||||
| -			first = first and false
 | ||||
| -			self:parse_string(tostring(key))
 | ||||
| -			self:put(":")
 | ||||
| -			self:dispatch(entry)
 | ||||
| +			if key ~= null then
 | ||||
| +				first = first or self:put(",")
 | ||||
| +				first = first and false
 | ||||
| +				self:parse_string(tostring(key))
 | ||||
| +				self:put(":")
 | ||||
| +				self:dispatch(entry)
 | ||||
| +			end
 | ||||
|  		end | ||||
|   | ||||
|  		self:put("}") | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user