Модуль:Wikidata/littleutils

Материал из Викизнайки
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль: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