Боты, Бюрократы, Боты Структурированных обсуждений, Администраторы интерфейса, Управляющие подписками push-уведомлений, Скрывающие, Администраторы
4361
правка
Mansur700 (обсуждение | вклад) (Новая страница: «-- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a mw.title object, using pcall to avoid generating script erro...») |
Adam (обсуждение | вклад) Нет описания правки |
||
Строка 16: | Строка 16: | ||
local function case_insensitive_pattern(pattern) | local function case_insensitive_pattern(pattern) | ||
-- find an optional '%' (group 1) followed by any character (group 2) | -- find an optional '%' (group 1) followed by any character (group 2) | ||
local p = | local p = mw.ustring.gsub(pattern, "(%%?)(.)", function(percent, letter) | ||
if percent ~= "" or not | if percent ~= "" or not mw.ustring.match(letter, "%a") then | ||
-- if the '%' matched, or `letter` is not a letter, return "as is" | -- if the '%' matched, or `letter` is not a letter, return "as is" | ||
return percent .. letter | return percent .. letter | ||
else | else | ||
-- else, return a case-insensitive character class of the matched letter | -- else, return a case-insensitive character class of the matched letter | ||
return string.format("[%s%s]", | return string.format("[%s%s]", mw.ustring.lower(letter), mw.ustring.upper(letter)) | ||
end | end | ||
end) | end) | ||
Строка 33: | Строка 33: | ||
local en_redirect = case_insensitive_pattern("redirect"); | local en_redirect = case_insensitive_pattern("redirect"); | ||
local ru_redirect = case_insensitive_pattern("перенаправление"); | local ru_redirect = case_insensitive_pattern("перенаправление"); | ||
local result = string.match( | |||
text, | text, | ||
"^%s*#".. en_redirect .. "%s*:?%s*%[%[([^%[%]|]-)%]%]" | "^%s*#".. en_redirect .. "%s*:?%s*%[%[([^%[%]|]-)%]%]" | ||
Строка 39: | Строка 39: | ||
text, | text, | ||
"^%s*#".. en_redirect .. "%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" | "^%s*#".. en_redirect .. "%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" | ||
) or | ) or mw.ustring.match( | ||
text, | text, | ||
"^%s*#" .. ru_redirect .. "%s*:?%s*%[%[([^%[%]|]-)%]%]" | "^%s*#" .. ru_redirect .. "%s*:?%s*%[%[([^%[%]|]-)%]%]" | ||
) or | ) or mw.ustring.match( | ||
text, | text, | ||
"^%s*#" .. ru_redirect .. " %s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" | "^%s*#" .. ru_redirect .. " %s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" | ||
) | ) | ||
return result and mw.uri.decode(result, 'w') | |||
end | end | ||