forked from Hyperion/HyperionOS
38 lines
993 B
Plaintext
38 lines
993 B
Plaintext
local ini = {}
|
|
|
|
function ini.parse(str)
|
|
local config = {}
|
|
local section = nil
|
|
|
|
for line in str:gmatch("[^\r\n]+") do
|
|
-- trim whitespace
|
|
line = line:match("^%s*(.-)%s*$")
|
|
|
|
-- skip empty lines and comments
|
|
if line ~= "" and not line:match("^[;#]") then
|
|
-- section
|
|
local sec = line:match("^%[(.-)%]$")
|
|
if sec then
|
|
section = sec
|
|
config[section] = config[section] or {}
|
|
else
|
|
-- key=value
|
|
local key, value = line:match("^(.-)=(.*)$")
|
|
if key then
|
|
key = key:match("^%s*(.-)%s*$")
|
|
value = value:match("^%s*(.-)%s*$")
|
|
|
|
if section then
|
|
config[section][key] = value
|
|
else
|
|
config[key] = value
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return config
|
|
end
|
|
|
|
return ini |