- Добавлен процесс для чтения iio-датчиков
[weathermon.git] / lib / wm_util.lua
diff --git a/lib/wm_util.lua b/lib/wm_util.lua
new file mode 100644 (file)
index 0000000..bb5d8ee
--- /dev/null
@@ -0,0 +1,106 @@
+#!/usr/bin/lua
+
+local socket = require "socket"
+
+function startswith(String,Start)
+   if String then
+     return string.sub(String,1,string.len(Start))==Start
+   else
+     return False
+   end    
+end
+
+function trim(s)
+   return (s:gsub("^%s*(.-)%s*$", "%1"))
+end
+
+function url_decode(str)
+  if not str then return nil end
+  str = string.gsub (str, "+", " ")
+  str = string.gsub (str, "%%(%x%x)", function(h) return
+    string.char(tonumber(h,16)) end)
+  str = string.gsub (str, "\r\n", "\n")
+  return str
+end
+
+function url_encode(str)
+  if (str) then
+    str = string.gsub (str, "\n", "\r\n")
+    str = string.gsub (str, "([^%w %-%_%.%~])",
+        function (c) return string.format ("%%%02X", string.byte(c)) end)
+    str = string.gsub (str, " ", "+")
+  end
+  return str   
+end
+
+function capture(cmd, raw)
+  local f = assert(io.popen(cmd, 'r'))
+  local s = assert(f:read('*a'))
+  f:close()
+  if raw then return s end
+  s = string.gsub(s, '^%s+', '')
+  s = string.gsub(s, '%s+$', '')
+  s = string.gsub(s, '[\n\r]+', ' ')
+  return s
+end
+
+function mqtt_encode(str)
+  if (str) then
+    str = string.gsub (str, "\n", "")
+    str = string.gsub (str, "/", "-")
+  end
+  return str   
+end
+
+function touch(name)
+  local file = io.open(name, 'a')
+  file:close()
+end
+
+function write_file(name,data)
+  pcall(function ()
+    local f = io.open(name,"w")
+    io.output(f)
+    io.write(data)
+    io.close(f)
+  end)
+end
+
+function file_exists(name)
+   local f=io.open(name,"r")
+   if f~=nil then io.close(f) return true else return false end
+end
+
+function get_file_content(name)
+  local f = io.open(name,"r")
+  if f ~= nil then 
+    local content = trim(f:read("*all"))
+    io.close(f) 
+    return content
+  else 
+    return false 
+  end
+end
+
+function sleep(sec)
+  socket.sleep(sec)
+end
+
+function split(s, delimiter)
+    local result = {};
+    for match in (s..delimiter):gmatch("(.-)"..delimiter) do
+        result[#result+1] = match
+    end
+    return result;
+end
+
+function list_dir(name)
+    local lfs = require "lfs"
+    local result = {}
+    for name in lfs.dir(name) do
+        if not startswith(name,".") then
+          result[#result+1] = name
+        end  
+    end
+    return result
+end