X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/b0a71baeb5eeb8101a620b3558008038d487b3f7..96df4b879033f447d494dfc9928d97cc34e5473b:/helpers.lua

diff --git a/helpers.lua b/helpers.lua
index c42ce61..af6443f 100644
--- a/helpers.lua
+++ b/helpers.lua
@@ -10,7 +10,8 @@
 local debug  = require("debug")
 
 local capi   = { timer = timer }
-local io     = { open = io.open }
+local io     = { open = io.open,
+                 lines = io.lines }
 local rawget = rawget
 
 -- Lain helper functions for internal use
@@ -30,18 +31,40 @@ end
 
 -- }}}
 
--- {{{ Read the first line of a file or return nil
+-- {{{ File operations
 
-function helpers.first_line(f)
-    local fp = io.open(f)
-    if not fp
-    then
-        return nil
-    end
+-- see if the file exists
+function helpers.file_exists(file)
+  local f = io.open(file, "rb")
+  if f then f:close() end
+  return f ~= 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
 
 -- }}}