Author: Not specified Language: lua
Description: (v2) Timestamp: 2018-05-13 22:29:42 +0000
View raw paste Reply
  1. local oldIni = ini_file
  2.  
  3. ini_file() = function (pfile, par)
  4.   if par then
  5.     return create_ini_file(parse(pfile))
  6.   else
  7.     return oldIni(pfile)
  8.   end
  9. end
  10.  
  11. function parse (pfile)
  12.         local cdini = oldIni(pfile)
  13.         pfile = getFS():update_path("$game_config$", pfile)
  14.         local tbl, str = {{}, {}}, ""
  15.         local fcomm, pcomm, sec, key, val, parent
  16.        
  17.         for line in io.lines(pfile) do
  18.                 if string.find(line, "[[].+[]]") then
  19.                         fcomm, sec = string.match(line, "([;]?)[[]([^;]+)[]]")
  20.                         if fcomm and fcomm==";" then break end
  21.                         tbl[1][sec] = {}
  22.                         table.insert(tbl[2], sec)
  23.                         parent = string.match(line, "[[].+[]][:](.+)")
  24.                         if parent then
  25.                                 tbl[1][sec] = tbl[1][parent]
  26.                         end
  27.                         --**************************************--             
  28.                         for i=0, cdini:line_count(sec) do
  29.                                 _, key, val = cdini:r_line(sec ,i, "", "")
  30.                                 if string.len(key)<1 or string.len(val)<1 then break end
  31.                                 tbl[1][sec][key] = val
  32.                         end
  33.                          --**************************************--                    
  34.                 end
  35.         end
  36.         local tlist = tbl[2]
  37.         local tdata = tbl[1]
  38.         for i=1, table.getn(tlist) do
  39.                 str = string.format("%s\n\n[%s]", str, tlist[i])
  40.                 if type(tdata[tlist[i]]) == 'table' then
  41.                         for key, val in pairs(tdata[tlist[i]]) do
  42.                                 str = string.format("%s\n%s = %s", str, key, val)
  43.                         end
  44.                 end
  45.         end
  46.         return str
  47. end
View raw paste Reply