Перейти к содержанию

Модуль:Игроки клуба: различия между версиями

Bot (обсуждение | вклад)
Название категории игроков по странице клуба (для {{Футбольный клуб}})
 
м 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 = p.category(page)
local cat = existing(page)
if not cat then
if not cat then
return ''
end
local t = mw.title.new(cat, 14)
if not t or not t.exists 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