Модуль:GetField: различия между версиями

Нет описания правки
Нет описания правки
Строка 220: Строка 220:
             local key = (prefix == "" and tostring(k) or prefix .. "." .. tostring(k))
             local key = (prefix == "" and tostring(k) or prefix .. "." .. tostring(k))


             if type(v) == "table" then
             local okJson, json = pcall(mw.text.jsonEncode, v)
                if next(v) == nil then
            if okJson and json == "null" then
                elseif is_array(v) then
                parts[#parts + 1] = key .. "=null"
                     local ok, json = pcall(mw.text.jsonEncode, v)
            else
                    if ok and json then
                if type(v) == "table" then
                        parts[#parts + 1] = key .. "=" .. to_nowiki(json)
                    if next(v) == nil then
                    elseif is_array(v) then
                        local ok, arrJson = pcall(mw.text.jsonEncode, v)
                        if ok and arrJson then
                            parts[#parts + 1] = key .. "=" .. to_nowiki(arrJson)
                        end
                     else
                        local ok, objJson = pcall(mw.text.jsonEncode, v)
                        if ok and objJson then
                            parts[#parts + 1] = key .. "=" .. to_nowiki(objJson)
                        end
                        walk(v, key)
                     end
                     end
                 else
                 else
                     local ok, json = pcall(mw.text.jsonEncode, v)
                     local fv = format_value(v)
                     if ok and json then
                     if fv ~= "" then
                         parts[#parts + 1] = key .. "=" .. to_nowiki(json)
                         parts[#parts + 1] = key .. "=" .. fv
                     end
                     end
                    walk(v, key)
                end
            else
                local okJson, json = pcall(mw.text.jsonEncode, v)
                if okJson and json == "null" then
                    parts[#parts + 1] = key .. "=null"
                else
                    parts[#parts + 1] = key .. "=" .. tostring(v)
                 end
                 end
             end
             end