Модуль:Wikidata/littleutils
Материал из Occultica
Версия от 09:33, 14 февраля 2022; ru>WindEwriX (вынесем логику из checkBadge(), чтобы можно было вызывать из других модулей)
Для документации этого модуля может быть создана страница Модуль:Wikidata/littleutils/doc
local p = {} -- Возращает ID значения свойства (Qxxx) -- Аргументы: id элемента (Qxxx), id свойства (Pxxx) function p.getValueId(frame) local item, property = frame.args[1], frame.args[2] local prop = mw.wikibase.getEntity(item):getBestStatements(property) if prop[1] then local id = prop[1].mainsnak.datavalue.value.id if id ~= nil then return id end 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 entity = mw.wikibase.getEntity() if entity and entity.sitelinks and entity.sitelinks.ruwiki and entity.sitelinks.ruwiki.badges then for i, elementId in ipairs( entity.sitelinks.ruwiki.badges ) do if elementId == badgeId then return true end 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