Модуль:Игроки клуба: различия между версиями
Внешний вид
Bot (обсуждение | вклад) Название категории игроков по странице клуба (для {{Футбольный клуб}}) |
Andrew (обсуждение | вклад) м 1 версия импортирована |
||
| (не показана 1 промежуточная версия 1 участника) | |||
| Строка 2: | Строка 2: | ||
-- «Название (футбольный клуб, Место[, год])» → «Игроки ФК «Название» (Место[, год])»; | -- «Название (футбольный клуб, Место[, год])» → «Игроки ФК «Название» (Место[, год])»; | ||
-- приставка «ФК » в начале названия отбрасывается («ФК Сокол» → «Сокол»). | -- приставка «ФК » в начале названия отбрасывается («ФК Сокол» → «Сокол»). | ||
-- MediaWiki делает первую букву названия страницы заглавной («iFlat» → «IFlat»), | |||
-- поэтому, если категории с заглавной буквой нет, ищется и вариант со строчной | |||
-- («IFlat (футбольный клуб, Киевский)» → «Игроки ФК «iFlat» (Киевский)»). | |||
-- Используется в {{Футбольный клуб}}: строка «Игроки» со ссылкой на категорию. | -- Используется в {{Футбольный клуб}}: строка «Игроки» со ссылкой на категорию. | ||
local p = {} | local p = {} | ||
| Строка 12: | Строка 15: | ||
base = mw.ustring.gsub(base, '^ФК ', '') | base = mw.ustring.gsub(base, '^ФК ', '') | ||
return 'Игроки ФК «' .. base .. '» (' .. place .. ')' | return 'Игроки ФК «' .. base .. '» (' .. place .. ')' | ||
end | |||
-- Название существующей категории игроков для страницы клуба или nil. | |||
local function existing(page) | |||
local variants = { page } | |||
local lower = mw.ustring.lower(mw.ustring.sub(page, 1, 1)) .. mw.ustring.sub(page, 2) | |||
if lower ~= page then | |||
table.insert(variants, lower) | |||
end | |||
for _, name in ipairs(variants) do | |||
local cat = p.category(name) | |||
if cat then | |||
local t = mw.title.new(cat, 14) | |||
if t and t.exists then | |||
return cat | |||
end | |||
end | |||
end | |||
return nil | |||
end | end | ||
| Строка 22: | Строка 44: | ||
page = mw.title.getCurrentTitle().text | page = mw.title.getCurrentTitle().text | ||
end | end | ||
local cat = | local cat = existing(page) | ||
if not cat then | if not cat then | ||
return '' | return '' | ||
end | end | ||
| Строка 37: | Строка 55: | ||
end | end | ||
-- {{#invoke:Игроки клуба|name}} — только название категории (без пространства имён). | -- {{#invoke:Игроки клуба|name}} — только название категории (без пространства имён): | ||
-- существующей, а если её нет — построенной по названию страницы. | |||
function p.name(frame) | function p.name(frame) | ||
local page = frame.args[1] | local page = frame.args[1] | ||
| Строка 43: | Строка 62: | ||
page = mw.title.getCurrentTitle().text | page = mw.title.getCurrentTitle().text | ||
end | end | ||
return p.category(page) or '' | return existing(page) or p.category(page) or '' | ||
end | end | ||
return p | return p | ||