Модуль:Wikidata/littleutils
Перейти к навигации
Перейти к поиску
local p = {}
-- Возращает ID значения свойства (Qxxx)
-- Аргументы: id элемента (Qxxx), id свойства (Pxxx)
function p.getValueId( frame )
local entityId, propertyId = frame.args[ 1 ], frame.args[ 2 ]
local statements = mw.wikibase.getBestStatements( entityId, propertyId )
if statements and statements[ 1 ] then
return statements[ 1 ].mainsnak.datavalue.value.id
end
end
-- Возращает имя категории, фильтруя вывод шаблонов {{wikidata/}}. Например: {{wikidata/p19}}, {{wikidata/p20}}
-- Аргумент: номер свойства в названии шаблона ('p19' и т.п.)
function p.filterCategoryName( frame )
local s = mw.getCurrentFrame():expandTemplate { title='wikidata/' .. frame.args[ 1 ] }
s = s:gsub( '^.-(Категория:[^]]+).-$', '%1' )
return s
end
-- Логика проверки на наличие нужного значка для текущей страницы, может использоваться из других модулей
function p.checkBadgeImpl( badgeId )
local entityId = mw.wikibase.getEntityIdForCurrentPage()
if not entityId then
return false
end
local badges = mw.wikibase.getBadges( entityId, 'ruwiki' )
for _, valueId in ipairs( badges ) do
if valueId == badgeId then
return true
end
end
return false
end
-- Проверяет на наличие нужного значка для текущей страницы и выводит штрафную категорию, если его нет
-- Аргументы: id значка (Qxxx), название категории без пространства имён
function p.checkBadge( frame )
local badgeId, penaltyCategory = frame.args[ 1 ], frame.args[ 2 ]
if p.checkBadgeImpl( badgeId ) then
return ''
end
return '[[Категория:' .. penaltyCategory .. ']]'
end
return p