Module:Wd: Difference between revisions

Content deleted Content added
Added support for somevalue and novalue types
Fixes and clean-up
Line 79:
return value
elseif snak.datavalue.type == 'wikibase-entityid' then
returnlocal itemID = mw.wikibase.label("Q" .. snak.datavalue.value['numeric-id'])
local linkTargetvalue = mw.wikibase.sitelinklabel(itemID)
if linkTargetlinked then
local linkTarget = mw.wikibase.sitelink(itemID)
if linkTarget then
outQualifiervalue = "[[" .. linkTarget .. "|" .. (linkNamevalue or linkTarget) .. "]]"
elseif linkNamenot value then
value = "[[:d:" .. itemID .. "|" .. itemID .. "]]"
end
elseif linkNamenot value then
value = itemID
end
return value
else
return unknownDatatypeError(snak.datavalue.type)
Line 249 ⟶ 261:
 
p.property = function(frame)
local entity, propertyID, claims, rankPos, value
local nextArg = mw.text.trim(frame.args[1] or "")
local nextIndex = 2
Line 273 ⟶ 285:
rankPos = convertRank(v.rank)
if rankMatches(rankPos) then
local value = getValue(v.mainsnak, withUnit)
if linked and v.mainsnak.snaktype == 'value' and v.mainsnak.datavalue.type == 'wikibase-entityid' then
if value then appendOutput(value, rankPos) end
local itemID = "Q" .. v.mainsnak.datavalue.value['numeric-id']
local linkTarget = mw.wikibase.sitelink(itemID)
local linkName = mw.wikibase.label(itemID) -- == getValue(v.mainsnak)
if linkTarget then
appendOutput("[[" .. linkTarget .. "|" .. (linkName or linkTarget) .. "]]", rankPos)
elseif linkName then
appendOutput(linkName, rankPos)
end
else
local value = getValue(v.mainsnak, withUnit)
if value then appendOutput(value, rankPos) end
end
end
end
Line 296:
 
p.qualifier = function(frame)
local entity, propertyID, propertyValue, qualifierID, claims, rankPos, outValue, outInter, outQualifier
local nextArg = mw.text.trim(frame.args[1] or "")
local nextIndex = 2
Line 341:
for k, v in pairs(claims) do
rankPos = convertRank(v.rank)
if (propertyValue == nil or snakEqualsValue(v.mainsnak, propertyValue)) and v.qualifiers[qualifierID] then
if rankMatches(rankPos) then
outValue = nil
for k2, v2 in pairs(v.qualifiers[qualifierID]) do
if v2.snaktypeoutInter == 'value' thennil
outValueoutQualifier = ""{}
outQualifier = ""
if propertyWithQualifier then
local valueoutValue = getValue(v.mainsnak, withUnit)
if linked and v2.datavalue.type == 'wikibase-entityid' then
end
local itemID = "Q" .. v2.datavalue.value['numeric-id']
local linkTarget = mw.wikibase.sitelink(itemID)
if (not propertyWithQualifier or outValue) and v.qualifiers[qualifierID] then
local linkName = mw.wikibase.label(itemID) -- == getValue(v2)
for k2, v2 in pairs(v.qualifiers[qualifierID]) do
local valueoutInter = getValue(v2, withUnit)
if linkTarget then
if linkTargetoutInter then
outQualifier = "[[" .. linkTarget .. "|" .. (linkName or linkTarget) .. "]]"
elseifif linkNamenot propertyWithQualifier then
outQualifierappendOutput(outInter, = linkNamerankPos)
end
else
local value = getValue(v2, withUnit)
if value then outQualifier = value end
end
if propertyWithQualifier then
outQualifier = " <span style=\"font-size:smaller\">(" .. outQualifier .. ")</span>"
if linked and v.mainsnak.datavalue.type == 'wikibase-entityid' then
local itemID = "Q" .. v.mainsnak.datavalue.value['numeric-id']
local linkTarget = mw.wikibase.sitelink(itemID)
local linkName = mw.wikibase.label(itemID) -- == getValue(v.mainsnak)
if linkTarget then
outValue = outValue .. "[[" .. linkTarget .. "|" .. (linkName or linkTarget) .. "]]"
elseif linkName then
outValue = outValue .. linkName
end
else
outQualifier[#outQualifier + 1] = outInter
local value = getValue(v.mainsnak, withUnit)
if value then outValue = outValue .. value end
end
end
end
end
if outValue and propertyWithQualifier then
outQualifier = table.concat(outQualifier, ", ")
if value then outQualifier ~= value"" endthen
outQualifier = " <span style=\"font-size:smaller\">(" .. outQualifier .. ")</span>"
outValue = outValue .. outQualifier
appendOutput(outValue, rankPos)
end
appendOutput(linkNameoutValue, rankPos)
end
end