libs/core: Create get_first() in uci model
This commit is contained in:
parent
80b5a4b6f8
commit
99881d9cb6
1 changed files with 31 additions and 2 deletions
|
@ -30,8 +30,9 @@ local table = require "table"
|
|||
|
||||
|
||||
local setmetatable, rawget, rawset = setmetatable, rawget, rawset
|
||||
local error, pairs, ipairs, tostring = error, pairs, ipairs, tostring
|
||||
local require, getmetatable, type = require, getmetatable, type
|
||||
local require, getmetatable = require, getmetatable
|
||||
local error, pairs, ipairs = error, pairs, ipairs
|
||||
local type, tostring, tonumber = type, tostring, tonumber
|
||||
|
||||
--- LuCI UCI model library.
|
||||
-- The typical workflow for UCI is: Get a cursor instance from the
|
||||
|
@ -167,6 +168,34 @@ function Cursor.get_list(self, config, section, option)
|
|||
return nil
|
||||
end
|
||||
|
||||
--- Get the given option from the first section with the given type.
|
||||
-- @param config UCI config
|
||||
-- @param type UCI section type
|
||||
-- @param option UCI option (optional)
|
||||
-- @param default Default value (optional)
|
||||
-- @return UCI value
|
||||
function Cursor.get_first(self, conf, stype, opt, def)
|
||||
local rv = def
|
||||
|
||||
self:foreach(conf, stype,
|
||||
function(s)
|
||||
local val = not opt and s['.name'] or s[opt]
|
||||
|
||||
if type(def) == "number" then
|
||||
val = tonumber(val)
|
||||
elseif type(def) == "boolean" then
|
||||
val = (val == "1" or val == "true" or val == "enabled")
|
||||
end
|
||||
|
||||
if val ~= nil then
|
||||
rv = val
|
||||
return false
|
||||
end
|
||||
end)
|
||||
|
||||
return rv
|
||||
end
|
||||
|
||||
--- Set given values as list.
|
||||
-- @param config UCI config
|
||||
-- @param section UCI section name
|
||||
|
|
Loading…
Reference in a new issue