mirror of
https://github.com/bartbes/inifile.git
synced 2024-11-15 23:54:23 +00:00
Add inifile
This commit is contained in:
commit
757d8849c6
46
inifile/inifile.lua
Normal file
46
inifile/inifile.lua
Normal file
@ -0,0 +1,46 @@
|
||||
inifile = {}
|
||||
|
||||
local lines
|
||||
local write
|
||||
|
||||
if love then
|
||||
lines = love.filesystem.lines
|
||||
write = love.filesystem.write
|
||||
else
|
||||
lines = function(name) return assert(io.open(name)):lines() end
|
||||
write = function(name, contents) return assert(io.open(name, "w")):write(contents) end
|
||||
end
|
||||
|
||||
function inifile.parse(name)
|
||||
local t = {}
|
||||
local section
|
||||
for line in lines(name) do
|
||||
local s = line:match("^%[([^%]]+)%]$")
|
||||
if s then
|
||||
section = s
|
||||
t[section] = t[section] or {}
|
||||
end
|
||||
local key, value = line:match("^(%w+)%s-=%s-(.+)$")
|
||||
if tonumber(value) then value = tonumber(value) end
|
||||
if value == "true" then value = true end
|
||||
if value == "false" then value = false end
|
||||
if key and value then
|
||||
t[section][key] = value
|
||||
end
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
function inifile.save(name, t)
|
||||
local contents = ""
|
||||
for section, s in pairs(t) do
|
||||
local sec = ("[%s]\n"):format(section)
|
||||
for key, value in pairs(s) do
|
||||
sec = sec .. ("%s=%s\n"):format(key, tostring(value))
|
||||
end
|
||||
contents = contents .. sec .. "\n"
|
||||
end
|
||||
write(name, contents)
|
||||
end
|
||||
|
||||
return inifile
|
Loading…
Reference in New Issue
Block a user