mirror of https://github.com/lcpz/lain.git
new I/O file helper functions
This commit is contained in:
parent
f87b80a92c
commit
3fc0ed44dc
45
helpers.lua
45
helpers.lua
|
@ -10,7 +10,8 @@
|
||||||
local debug = require("debug")
|
local debug = require("debug")
|
||||||
|
|
||||||
local capi = { timer = timer }
|
local capi = { timer = timer }
|
||||||
local io = { open = io.open }
|
local io = { open = io.open,
|
||||||
|
lines = io.lines }
|
||||||
local rawget = rawget
|
local rawget = rawget
|
||||||
|
|
||||||
-- Lain helper functions for internal use
|
-- 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)
|
-- see if the file exists
|
||||||
local fp = io.open(f)
|
function helpers.file_exists(file)
|
||||||
if not fp
|
local f = io.open(file, "rb")
|
||||||
then
|
if f then f:close() end
|
||||||
return nil
|
return f ~= nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local content = fp:read("*l")
|
|
||||||
fp:close()
|
-- get all lines from a file, returns an empty
|
||||||
return content
|
-- 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
|
end
|
||||||
|
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
Licensed under GNU General Public License v2
|
Licensed under GNU General Public License v2
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
Licensed under GNU General Public License v2
|
Licensed under GNU General Public License v2
|
||||||
|
|
2
wiki
2
wiki
|
@ -1 +1 @@
|
||||||
Subproject commit 2fe55cb50b4192866551d50dce563a52234961c7
|
Subproject commit 6825e84bb73415c4cbf5fcd903ea4987976e4be3
|
Loading…
Reference in New Issue