libs/core: Create get_first() in uci model

This commit is contained in:
Manuel Munz 2010-12-12 15:01:39 +00:00
parent 80b5a4b6f8
commit 99881d9cb6

View file

@ -30,8 +30,9 @@ local table = require "table"
local setmetatable, rawget, rawset = setmetatable, rawget, rawset local setmetatable, rawget, rawset = setmetatable, rawget, rawset
local error, pairs, ipairs, tostring = error, pairs, ipairs, tostring local require, getmetatable = require, getmetatable
local require, getmetatable, type = require, getmetatable, type local error, pairs, ipairs = error, pairs, ipairs
local type, tostring, tonumber = type, tostring, tonumber
--- LuCI UCI model library. --- LuCI UCI model library.
-- The typical workflow for UCI is: Get a cursor instance from the -- 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 return nil
end 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. --- Set given values as list.
-- @param config UCI config -- @param config UCI config
-- @param section UCI section name -- @param section UCI section name