123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- --[[
- Copyright (c) 2020 Milis Linux
- --]]
- -- check a variable in an array
- function has_value (tab, val)
- for index, value in ipairs(tab) do
- if value == val then
- return true
- end
- end
- return false
- end
- -- remove leading whitespace from string.
- -- http://en.wikipedia.org/wiki/Trim_(programming)
- function ltrim(s)
- return (s:gsub("^%s*", ""))
- end
- -- remove trailing whitespace from string.
- -- http://en.wikipedia.org/wiki/Trim_(programming)
- function rtrim(s)
- local n = #s
- while n > 0 and s:find("^%s", n) do n = n - 1 end
- return s:sub(1, n)
- end
- local talimat = {};
- --- Returns a table containing all the data from the INI file.
- --@param fileName The name of the INI file to parse. [string]
- --@return The table containing all data from the INI file. [table]
- function talimat.load(fileName,nested)
- assert(type(fileName) == 'string', 'Parameter "fileName" must be a string.');
- local file = assert(io.open(fileName, 'r'), 'Error loading file : ' .. fileName);
- local data = {};
- local section;
- local count =0;
- -- if nested param dont't push
- if nested == nil then
- nested={}
- end
- for line in file:lines() do
- local tempSection = line:match('^%[([^%[%]]+)%]$');
- if(tempSection)then
- section = tonumber(tempSection) and tonumber(tempSection) or tempSection;
- data[section] = data[section] or {};
- end
- local param, value = line:match('^([%w|_]+)%s-=%s-(.+)$');
- if(param and value ~= nil)then
-
- if(tonumber(value))then
- value = tonumber(value);
- elseif(value == 'true')then
- value = true;
- elseif(value == 'false')then
- value = false;
- end
- if(tonumber(param))then
- param = tonumber(param);
- end
-
- -- value trim spaces not all just ltrim,rtrim
- -- this is for all,not suit for betik key -> value=value:gsub('%s+', '')
- if value ~= nil and type(value) ~= "number" then
- value=ltrim(rtrim(value))
- end
- -- nested parametresiyle derle,pakur gibi kısımlar için
- -- indekslenerek array yapı olarak tutulması sağlanıyor.
- -- derle,pakur sıralı betik olmak zorundadır.
- if has_value(nested,section) then
- --count = count +1
- --data[section][count] = param .."@@"..value;
- table.insert(data[section],param .."@@"..value)
- else
- data[section][param] = value;
- end
- end
- end
- file:close();
- return data;
- end
- return talimat;
|