Модуль:Wikidata/littleutils: различия между версиями
Перейти к навигации
Перейти к поиску
imported>Q-bit array м (Защитил «Модуль:Wikidata/littleutils»: критический шаблон ([Редактирование=только администраторы] (бессрочно) [Переименование=только администра…) |
imported>WindEwriX (вынесем логику из checkBadge(), чтобы можно было вызывать из других модулей) |
||
Строка 21: | Строка 21: | ||
end | end | ||
-- Логика проверки на наличие нужного значка для текущей страницы, может использоваться из других модулей | |||
-- | function p.checkBadgeImpl(badgeId) | ||
function p. | |||
local entity = mw.wikibase.getEntity() | local entity = mw.wikibase.getEntity() | ||
if entity and entity.sitelinks and entity.sitelinks.ruwiki and entity.sitelinks.ruwiki.badges then | 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 | for i, elementId in ipairs( entity.sitelinks.ruwiki.badges ) do | ||
if elementId == badgeId then | if elementId == badgeId then | ||
return | return true | ||
end | end | ||
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 | end | ||
return '[[Категория:' .. penaltyCategory .. ']]' | return '[[Категория:' .. penaltyCategory .. ']]' |
Текущая версия на 09:33, 14 февраля 2022
Для документации этого модуля может быть создана страница Модуль: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