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