Module:Wd: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 1:
local p = {}
 
local outPreferredfunction = {}newState()
return {
local outNormal = {}
outPreferred = {},
local outDeprecated = {}
local outNormal = {},
local outDeprecated = {},
 
local bestRank = true,
local foundRank = 3,
local maxRank, minRank,
 
local linked = false,
 
local propertyWithQualifier = false,
local withUnit = false,
 
unknownDatatypeError = function(type)
local function unknownDatatypeError(type)
return "<strong class=\"error\">Unknown or unsupported datatype '" .. type .. "'</strong>"
end,
 
localconvertUnit function= convertUnitfunction(unit)
local i, j, itemID, label, target
Line 57 ⟶ 59:
return " " .. unit
end,
 
localgetValue function= getValuefunction(snak, appendUnit)
appendUnit = appendUnit or false
Line 105 ⟶ 107:
return nil
end
end,
 
localgetRawValue function= getRawValuefunction(snak)
local temp, value
if snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then
Line 118 ⟶ 120:
return value
end
end,
 
localsnakEqualsValue function= snakEqualsValuefunction(snak, value)
if snak.snaktype == 'value' then
local snakValue = getRawValue(snak)
Line 142 ⟶ 144:
return false
end
end,
 
setRankBoundaries = function(rank)
local function setRankBoundaries(rank)
local rankPos
Line 179 ⟶ 181:
minRank = rankPos
end
end,
 
localconvertRank function= convertRankfunction(rank)
if (rank == "preferred") then
return 1
Line 191 ⟶ 193:
return 4 -- default (in its literal sense)
end
end,
 
localrankMatches function= rankMatchesfunction(rankPos)
if bestRank then
if foundRank > rankPos then
Line 211 ⟶ 213:
return (maxRank <= rankPos and rankPos <= minRank)
end
end,
 
localappendOutput function= appendOutputfunction(value, rankPos)
if rankPos == 1 then
outPreferred[#outPreferred + 1] = value
Line 221 ⟶ 223:
outDeprecated[#outDeprecated + 1] = value
end
end,
 
localout function= outfunction()
local out = ""
Line 251 ⟶ 253:
return out
end,
 
localprocessFlag function= processFlagfunction(flag)
if flag == "linked" then
linked = true
Line 266 ⟶ 268:
return false
end
end
}
end
 
p.property = function(frame)
local s = newState()
local entity, propertyID, claims, rankPos, value
local nextArg = mw.text.trim(frame.args[1] or "")
local nextIndex = 2
s.setRankBoundaries("best")
while s.processFlag(nextArg) do
nextArg = mw.text.trim(frame.args[nextIndex] or "")
nextIndex = nextIndex + 1
Line 291 ⟶ 296:
if claims then
for k, v in pairs(claims) do
rankPos = s.convertRank(v.rank)
if s.rankMatches(rankPos) then
value = s.getValue(v.mainsnak, withUnit)
if value then s.appendOutput(value, rankPos) end
end
end
return s.out()
else
return ""