Модуль:Редкость
Внешний вид
Цветная плашка редкости предмета. В статьях используйте шаблон Шаблон:Редкость: {{Редкость|Редкий}}. Карточка предмета вызывает модуль сама.
Понимает Обычный, Необычный, Редкий, Эпический, Легендарный в любом роде и регистре, а также английские Common, Uncommon, Rare, Epic, Legendary. Неизвестное значение выводится как есть, а статья попадает в Категория:Страницы с неизвестной редкостью.
Цвета плашек задаются в Шаблон:Инфобокс/styles.css (классы arc-rarity-*).
-- Модуль:Редкость — цветная плашка редкости предмета.
-- {{#invoke:Редкость|badge|Редкий}} → «Редкий» на синем фоне
-- Понимает любые формы слова («редкий», «редкая», «Rare») и английские названия.
-- Неизвестное значение выводится как есть и добавляет страницу в служебную категорию.
local p = {}
local RARITIES = {
{ stem = 'необычн', en = 'uncommon', label = 'Необычный', class = 'uncommon' },
{ stem = 'обычн', en = 'common', label = 'Обычный', class = 'common' },
{ stem = 'редк', en = 'rare', label = 'Редкий', class = 'rare' },
{ stem = 'эпическ', en = 'epic', label = 'Эпический', class = 'epic' },
{ stem = 'легендарн', en = 'legendary', label = 'Легендарный', class = 'legendary' },
}
function p.find( value )
local key = mw.ustring.lower( mw.text.trim( value or '' ) )
if key == '' then
return nil
end
for _, rarity in ipairs( RARITIES ) do
if key == rarity.en or mw.ustring.find( key, '^' .. rarity.stem ) then
return rarity
end
end
return nil
end
function p.badge( frame )
local value = frame.args[1]
if not value or mw.text.trim( value ) == '' then
value = frame:getParent().args[1]
end
value = mw.text.trim( value or '' )
if value == '' then
return ''
end
local rarity = p.find( value )
if not rarity then
local category = ''
if mw.title.getCurrentTitle().namespace == 0 then
category = '[[Категория:Страницы с неизвестной редкостью]]'
end
return value .. category
end
return string.format(
'<span class="arc-rarity arc-rarity-%s" title="%s">%s</span>',
rarity.class,
rarity.en:gsub( '^%l', string.upper ),
rarity.label
)
end
return p