Модуль:RedLinksCount (Bk;rl,&RedLinksCount)
Перейти к навигации
Перейти к поиску
Этот модуль оценён как альфа-версия. Он готов для тестирований и может быть использован на небольшом количестве страниц для обнаружения проблем. Предложения по изменениям и дополнениям приветствуются. |
Этот модуль требует отладки. Не применяйте его широко, пока не протестируете. |
Модуль используется в шаблоне {{Красные ссылки}}.
local p = {}
-- Функция для подсчета красных ссылок на указанной странице
function p.countRedLinks(frame)
-- Получаем название страницы из аргумента
local pageName = frame.args[1] or ""
-- Получаем текст страницы по названию
local pageTitle = mw.title.new(pageName)
-- Проверяем, существует ли страница
if not pageTitle or not pageTitle.exists then
return "Страница не найдена."
end
local pageContent = pageTitle:getContent()
-- Ищем все красные ссылки
local redLinkCount = 0
-- Регулярное выражение для поиска обычных красных ссылок
for link in pageContent:gmatch('%[%[%s*([^%]|]+)%s*%|?%s*([^%]]+)%s*%]%]') do
local linkName = link:match('^%s*([^%|]+)%s*$')
if linkName then
local linkTitle = mw.title.new(linkName)
-- Проверяем, является ли ссылка красной
if linkTitle and not linkTitle.exists then
redLinkCount = redLinkCount + 1
end
end
end
-- Обработка ссылок без текста
for link in pageContent:gmatch('%[%[%s*([^%]]+)%s*%]%]') do
local linkName = link:match('^%s*([^%|]+)%s*$')
if linkName then
local linkTitle = mw.title.new(linkName)
-- Проверяем, является ли ссылка красной
if linkTitle and not linkTitle.exists then
redLinkCount = redLinkCount + 1
end
end
end
-- Обработка шаблона {{iw}}
for iwLink in pageContent:gmatch('{{iw|%s*([^|}]+)|?%s*([^|}]+)|?%s*([^|}]+)|?%s*([^|}]+)%s*}}') do
local iwLinkName = iwLink:match('^%s*([^|}]+)%s*$') -- Извлекаем только первый параметр
if iwLinkName then
local iwLinkTitle = mw.title.new(iwLinkName)
-- Проверяем, является ли ссылка красной
if iwLinkTitle and not iwLinkTitle.exists then
redLinkCount = redLinkCount + 1
end
end
end
return redLinkCount
end
return p