Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local override_ini_getters = {
- "r_bool",
- "r_float",
- "r_clsid",
- "r_s32",
- "r_token",
- "r_vector",
- "r_u32",
- "r_string_wq",
- "r_string"
- }
- local override_ini_checkers = {
- "section_exist",
- "line_exist"
- }
- function add_safe_getters()
- for fi, k in ipairs(override_ini_getters) do
- ini_file[k.."_safe"] = function(ini, section, line, ...)
- if ini:section_exist(section) and ini:line_exist(section, line) then
- return ini[k](ini, section, line, ...)
- end
- -- Здесь по вкусу добавляем вывод в лог
- return nil
- end
- end
- end
- function create_ini_multifile(...)
- local ini_arr = {...}
- local prx = create_ini_file(" ")
- override_methods(ini_arr, prx)
- end
- function override_methods(arr, prx)
- for fi, k in ipairs(override_ini_getters) do
- prx[k] = function(blank_ini, section, line, ...)
- for i, ini in ipairs(arr) do
- if ini:section_exist(section) and ini:line_exist(section, line) then
- return ini[k](ini, section, line, ...)
- end
- end
- return nil
- end
- end
- for fi, k in ipairs(override_ini_checkers) do
- prx[k] = function(blank_ini, ...)
- for i, ini in ipairs(arr) do
- if ini[k](ini, ...) then
- return true
- end
- end
- return false
- end
- end
- prx.line_count = function(blank_ini, section)
- local cnt = 0
- for i, ini in ipairs(arr) do
- if ini:section_exist(section) then
- cnt = cnt + ini:line_count(section)
- end
- end
- return cnt
- end
- prx.r_line = function(blank_ini, section, line_index, ...)
- if (line_index >=0) then
- for i, ini in ipairs(arr) do
- if ini:section_exist(section) then
- local cnt = ini:line_count(section)
- if (line_index + 1) > cnt then
- line_index = line_index - cnt
- else
- return ini:r_line(section, line_index, ...)
- end
- end
- end
- end
- return nil
- end
- end
- add_safe_getters()
- _G.create_ini_multifile = create_ini_multifile
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement