summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-10-30 17:54:25 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-10-30 17:54:25 +0000
commitddd1ba088ed3b93b3485e34d05c427d43306c744 (patch)
tree0352517a8a2ec83692492f671d739e4f86bbe3f5
parent4f2248fadb73503731f81826f589f782dbb986ac (diff)
libs/core: introduce luci.util.imatch()
-rw-r--r--libs/core/luasrc/util.lua18
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua
index f45a1f966e..a248026f10 100644
--- a/libs/core/luasrc/util.lua
+++ b/libs/core/luasrc/util.lua
@@ -200,7 +200,7 @@ local function _pcdata_repl(c)
( i >= 0x0E and i <= 0x1F ) or ( i == 0x7F )
then
return ""
-
+
elseif ( i == 0x26 ) or ( i == 0x27 ) or ( i == 0x22 ) or
( i == 0x3C ) or ( i == 0x3E )
then
@@ -282,6 +282,22 @@ function cmatch(str, pat)
return count
end
+--- Return a matching iterator for the given value. The iterator will return
+-- one token per invocation, the tokens are separated by whitespace. If the
+-- input value is a table, it is transformed into a string first. A nil value
+-- will result in a valid interator which aborts with the first invocation.
+-- @param val The value to scan (table, string or nil)
+-- @return Iterator which returns one token per call
+function imatch(v)
+ if v == nil then
+ v = ""
+ elseif type(v) == "table" then
+ v = table.concat(v, " ")
+ end
+
+ return v:gmatch("%S+")
+end
+
--- Parse certain units from the given string and return the canonical integer
-- value or 0 if the unit is unknown. Upper- or lower case is irrelevant.
-- Recognized units are: