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)
|
module('gluon.announce', package.seeall)
|
||||||
|
|
||||||
fs = require 'luci.fs'
|
fs = require 'luci.fs'
|
||||||
|
json = require 'luci.json'
|
||||||
uci = require('luci.model.uci').cursor()
|
uci = require('luci.model.uci').cursor()
|
||||||
util = require 'luci.util'
|
util = require 'luci.util'
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ local function collect_entry(entry)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function collect_dir(dir)
|
function collect_dir(dir)
|
||||||
local ret = {}
|
local ret = { [json.null] = true }
|
||||||
|
|
||||||
for _, entry in ipairs(fs.dir(dir)) do
|
for _, entry in ipairs(fs.dir(dir)) do
|
||||||
if entry:sub(1, 1) ~= '.' then
|
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 = {}
|
local ifname_address_cache = {}
|
||||||
|
|
||||||
function ifname2address(ifname)
|
function ifname2address(ifname)
|
||||||
@ -26,7 +22,7 @@ function batadv()
|
|||||||
if mac1 ~= nil and mac1 == mac2 then
|
if mac1 ~= nil and mac1 == mac2 then
|
||||||
ifaddress = ifname2address(ifname)
|
ifaddress = ifname2address(ifname)
|
||||||
if interfaces[ifaddress] == nil then
|
if interfaces[ifaddress] == nil then
|
||||||
interfaces[ifaddress] = { neighbours = {} }
|
interfaces[ifaddress] = { neighbours = { [json.null] = true } }
|
||||||
end
|
end
|
||||||
|
|
||||||
interfaces[ifaddress].neighbours[mac1] = { tq = tonumber(tq)
|
interfaces[ifaddress].neighbours[mac1] = { tq = tonumber(tq)
|
||||||
@ -35,7 +31,9 @@ function batadv()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return interfaces
|
if next(interfaces) then
|
||||||
|
return interfaces
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return batadv()
|
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'
|
local iwinfo = require 'iwinfo'
|
||||||
|
|
||||||
function neighbours(iface)
|
function neighbours(iface)
|
||||||
@ -12,7 +9,9 @@ function neighbours(iface)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
return stations
|
if next(stations) then
|
||||||
|
return stations
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function interfaces()
|
function interfaces()
|
||||||
@ -38,4 +37,6 @@ for address, iface in pairs(interfaces()) do
|
|||||||
wifi[address] = { neighbours = neighbours(iface) }
|
wifi[address] = { neighbours = neighbours(iface) }
|
||||||
end
|
end
|
||||||
|
|
||||||
return wifi
|
if next(wifi) then
|
||||||
|
return wifi
|
||||||
|
end
|
||||||
|
@ -48,5 +48,6 @@ end
|
|||||||
return {
|
return {
|
||||||
wireless = nil_table(wireless),
|
wireless = nil_table(wireless),
|
||||||
tunnel = nil_table(tunnel),
|
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