mirror of https://github.com/lcpz/lain.git
new I/O file helper functions
This commit is contained in:
parent
e31436a3c1
commit
89d557638d
45
helpers.lua
45
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
|
||||
|
||||
local content = fp:read("*l")
|
||||
fp:close()
|
||||
return content
|
||||
|
||||
-- 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
|
||||
|
||||
-- get first non empty line from a file,
|
||||
-- returns nil otherwise
|
||||
function helpers.first_nonempty_line(file)
|
||||
for k,v in pairs(lines_from(file)) do
|
||||
if #v then return v end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- }}}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
--[[
|
||||
|
||||
Licensed under GNU General Public License v2
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
--[[
|
||||
|
||||
Licensed under GNU General Public License v2
|
||||
|
|
2
wiki
2
wiki
|
@ -1 +1 @@
|
|||
Subproject commit 2fe55cb50b4192866551d50dce563a52234961c7
|
||||
Subproject commit 6825e84bb73415c4cbf5fcd903ea4987976e4be3
|
Loading…
Reference in New Issue