X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/8d37b9a1e4521a220f20ce2e1414f656aa3a5015..beb196af2f0f19fd2869a45ae752243ac055d1ce:/helpers.lua?ds=sidebyside

diff --git a/helpers.lua b/helpers.lua
index a8c4cd7..9c4a83f 100644
--- a/helpers.lua
+++ b/helpers.lua
@@ -1,15 +1,17 @@
 
 --[[
-                                                      
-     Licensed under GNU General Public License v2     
-      * (c) 2013,      Luke Bonham                    
-      * (c) 2010-2012, Peter Hofmann                  
-                                                      
+                                                  
+     Licensed under GNU General Public License v2 
+      * (c) 2013, Luke Bonham                     
+                                                  
 --]]
 
 local debug  = require("debug")
+
+local capi   = { timer = timer }
+local io     = { open  = io.open,
+                 lines = io.lines }
 local rawget = rawget
-local io     = { open = io.open }
 
 -- Lain helper functions for internal use
 -- lain.helpers
@@ -28,28 +30,53 @@ end
 
 -- }}}
 
--- {{{ Read the first line of a file or return nil.
+-- {{{ File operations
+
+-- see if the file exists and is readable
+function helpers.file_exists(file)
+  local f = io.open(file)
+  if f then
+      local s = f:read()
+      f:close()
+      f = s
+  end
+  return f ~= nil
+end
 
-function helpers.first_line(f)
-    local fp = io.open(f)
-    if not fp
-    then
-        return nil
-    end
+-- get all lines from a file, returns an empty 
+-- list/table if the file does not exist
+function helpers.lines_from(file)
+  if not helpers.file_exists(file) then return {} end
+  lines = {}
+  for line in io.lines(file) do 
+    lines[#lines + 1] = line
+  end
+  return lines
+end
+
+-- get first line of a file, return nil if
+-- the file does not exist
+function helpers.first_line(file)
+    return helpers.lines_from(file)[1]
+end
 
-    local content = fp:read("*l")
-    fp:close()
-    return content
+-- get first non empty line from a file,
+-- returns nil otherwise
+function helpers.first_nonempty_line(file)
+  for k,v in pairs(helpers.lines_from(file)) do
+    if #v then return v end 
+  end
+  return nil
 end
 
 -- }}}
 
--- {{{ Timer maker 
+-- {{{ Timer maker
 
 helpers.timer_table = {}
 
 function helpers.newtimer(name, timeout, fun, nostart)
-    helpers.timer_table[name] = timer({ timeout = timeout })
+    helpers.timer_table[name] = capi.timer({ timeout = timeout })
     helpers.timer_table[name]:connect_signal("timeout", fun)
     helpers.timer_table[name]:start()
     if not nostart then