Модуль: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