Перейти к содержанию

Амодуль:PropertyLink

Аматериал Авикипедиа аҟынтә - зхы иақәиҭу аенциклопедиа

function getProperty( propertyName )
	local entity = mw.wikibase.getEntityObject()
	if not entity or not entity.claims then return end--the entity doesn't exist or has no claims
	local property = entity.claims[propertyName]
	if not property then return end--no such property for this item
	property = property[1]
	local propValue = property.mainsnak and property.mainsnak.datavalue
	if not propValue then return end --property doesn't exist
	if propValue['type'] == 'wikibase-entityid' then
		local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )
		local linkTitle = mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
		return linkTarget and linkTitle and mw.ustring.format( "[[%s|%s]]", linkTarget, linkTitle )
			or linkTitle
	elseif propValue and propValue['type'] == 'string' then return propValue.value end
end

function property( frame )
	return getProperty(string.upper(frame.args[1]))
end
 
function getLabel( propertyName )
	local entity = mw.wikibase.getEntityObject()
	if not entity or not entity.claims then return end--the entity doesn't exist or has no claims
	local property = entity.claims[propertyName]
	if not property then return end--no such property for this item

	property = property[1]
	local propValue = property.mainsnak.datavalue
	if not propValue then return '' end --property doesn't exist

    if propValue['type'] == 'wikibase-entityid' then
        return mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
    elseif propValue['type'] == 'string' then
        return propValue.value
    end
end
 
-- Return the label for property, or the label of the linked entiy of that property
function label( frame )
	return getLabel( string.upper(frame.args[1] ))
end

function getImageLink( propName, width )
	local entity = mw.wikibase.getEntityObject()
	if not entity or not entity.claims then return end --the entity doesn't exist or has no claims
	local property = entity.claims[propName or "P18"]
	if property then
		local width = width or "220"
		return mw.ustring.format( '[[File:%s|%spx]]', property[1].mainsnak.datavalue.value, width )
    end
end

--use this function to get associated image to be used in the article
function imageLink( frame )
	return getImageLink( string.lower(frame.args[1]), frame.args.width)
end

return {
	imageLink = imageLink,
	Image = imageLink,
	File = imageLink,
	label = label,
	Label = label,
	property = property,
	Property = property,
	getProperty = getProperty,
	getImageLink = getImageLink,
	getLabel = getLabel
}