Изменения
начиная с 501 вызова не крашиться, а просто не проверять существование статьи и добавляться в Категория:Страницы со слишком большим количеством вызовов ресурсоёмких функций
local function is_empty(param)
local function is_empty(param)
return param == nil or param == ''
return param == nil or param == ''
end
local function getTitle(page)
local success, result = pcall(function()
local title = mw.title.new(page)
return { exists = title.exists, isRedirect = title.isRedirect }
end)
if success then
return result
else
return nil
end
end
end
-- получение страницы, чтобы знать, существует ли она и является ли она перенаправлением
-- получение страницы, чтобы знать, существует ли она и является ли она перенаправлением
local ru_page = mw.title.new(title)
local ru_page = getTitle(title) -- дорогая функция, после 500 вызова крашится
if ru_page == nil then
local ru_page_exists
local ru_page_isRedirect
if ru_page then
ru_page_exists = ru_page.exists
ru_page_isRedirect = ru_page.isRedirect
else -- после 500 вызова или если в названии есть некорректные символы
ru_page_exists = false
ru_page_isRedirect = false
end
end
local leave = ru_page_exists and not leave_always and not (ru_page_isRedirect and leave_if_redirect)
local leave = ru_page_exists and not leave_always and not (ru_page_isRedirect and leave_if_redirect)
-- проверка правильности обработанных параметров
-- проверка правильности обработанных параметров
if lang ~= 'd' and languages[lang] == nil then
if lang ~= 'd' and languages[lang] == nil then
return throwError('некорректный ISO-код «' .. lang .. '»', 'error', allow_cat)
return throwError('некорректный ISO-код «' .. lang .. '»', 'error', allow_cat)
return throwError('шаблон Не переведено 2 не поддерживает Викиданные вместо языка')
return throwError('шаблон Не переведено 2 не поддерживает Викиданные вместо языка')
end
end
if mode == 2 and not mw.title.new('Template:Lang-' .. lang).exists then
if mode == 2 and not mw.title.new('Template:Lang-' .. lang).exists then -- дорогая функция
return throwError('не найден шаблон ' .. frame:expandTemplate{ title = 'tl', args = { 'lang-' .. lang } },
return throwError('не найден шаблон ' .. frame:expandTemplate{ title = 'tl', args = { 'lang-' .. lang } },
'lang-not-exists', allow_cat)
'lang-not-exists', allow_cat)