summaryrefslogtreecommitdiffhomepage
path: root/src/ffluci/util.lua
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2008-03-02 21:52:58 +0000
committerJo-Philipp Wich <jow@openwrt.org>2008-03-02 21:52:58 +0000
commit3f5de3273c9e103b4909802e339db06fe0b53312 (patch)
tree793ef66c9456665f7b472e214d79b1078fccebe8 /src/ffluci/util.lua
* new project: ff-luci - Freifunk Lua Configuration Interface
Diffstat (limited to 'src/ffluci/util.lua')
-rw-r--r--src/ffluci/util.lua102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/ffluci/util.lua b/src/ffluci/util.lua
new file mode 100644
index 000000000..07cbb8000
--- /dev/null
+++ b/src/ffluci/util.lua
@@ -0,0 +1,102 @@
+--[[
+FFLuCI - Utility library
+
+Description:
+Several common useful Lua functions
+
+FileId:
+$Id$
+
+License:
+Copyright 2008 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+module("ffluci.util", package.seeall)
+
+-- Checks whether a table has an object "value" in it
+function contains(table, value)
+ for k,v in pairs(table) do
+ if value == v then
+ return true
+ end
+ end
+ return false
+end
+
+
+-- Dumps a table to stdout (useful for testing and debugging)
+function dumptable(t, i)
+ i = i or 0
+ for k,v in pairs(t) do
+ print(string.rep("\t", i) .. k, v)
+ if type(v) == "table" then
+ dumptable(v, i+1)
+ end
+ end
+end
+
+
+-- Escapes all occurences of c in s
+function escape(s, c)
+ c = c or "\\"
+ return s:gsub(c, "\\" .. c)
+end
+
+
+-- Runs "command" and returns its output
+function exec(command, return_array)
+ local pp = io.popen(command)
+ local data = nil
+
+ if return_array then
+ local line = ""
+ data = {}
+
+ while true do
+ line = pp:read()
+ if (line == nil) then break end
+ table.insert(data, line)
+ end
+ pp:close()
+ else
+ data = pp:read("*a")
+ pp:close()
+ end
+
+ return data
+end
+
+-- Populate obj in the scope of f as key
+function extfenv(f, key, obj)
+ local scope = getfenv(f)
+ scope[key] = obj
+ setfenv(f, scope)
+end
+
+
+-- Updates the scope of f with "extscope"
+function updfenv(f, extscope)
+ local scope = getfenv(f)
+ for k, v in pairs(extscope) do
+ scope[k] = v
+ end
+ setfenv(f, scope)
+end
+
+-- Returns the filename of the calling script
+function __file__()
+ return debug.getinfo(2, 'S').source:sub(2)
+end \ No newline at end of file