Module:WikidataIB

-- Module to try out use of a blacklist and whitelist for infobox fields -- Fields in blacklist are never to be displayed, i.e. module must return nil -- Fields in whitelist return local value if it exists or the Wikidata value otherwise -- The name of the field this is called from is passed in parameter |name -- blacklist is passed in parameter |suppressfields -- whitelist is passed in parameter |fetchwikidata

-- This is used to get a value, or a comma separated list of them if multiple values exist p.getValue = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") if input_parm then local entity = mw.wikibase.getEntityObject local claims if entity and entity.claims then claims = entity.claims[propertyID] end if claims then -- if wiki-linked value output as link if possible if (claims[1] and claims[1].mainsnak.snaktype == "value" and claims[1].mainsnak.datavalue.type == "wikibase-entityid") then local out = {} for k, v in pairs(claims) do local sitelink = mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) local label = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"]) if label == nil then label = "Q" .. v.mainsnak.datavalue.value["numeric-id"] end if sitelink then out[#out + 1] = "" .. label .. "" else out[#out + 1] = "" .. label .. "[*] "					end end return table.concat(out, ", ") else -- just return best vakues return entity:formatPropertyValues(propertyID).value end else return "" end else return input_parm end end