Module:Wikidata: Difference between revisions

Content deleted Content added
Prune code duplication (triplication?) of content of p.getValue and family
Prune more code duplication in code for qualifiers
Line 621:
end
end
local function getQualifier(frame, outputHook)
 
p.getQualifierValue = function(frame)
local propertyID = mw.text.trim(frame.args[1] or "")
local qualifierID = mw.text.trim(frame.args[2] or "")
Line 633 ⟶ 632:
for k2, v2 in pairs(v.qualifiers[qualifierID]) do
if v2.snaktype == 'value' then
out[#out + 1] = outputHook(v2.datavalue.value);
local qnumber = "Q" .. v2.datavalue.value["numeric-id"]
if (mw.wikibase.sitelink(qnumber)) then
out[#out + 1] = "[[" .. mw.wikibase.sitelink(qnumber) .. "]]"
else
out[#out + 1] = "[[:d:" .. qnumber .. "|" ..qnumber .. "]]<abbr title='" .. i18n["errors"]["local-article-not-found"] .. "'>[*]</abbr>"
end
end
end
end
return table.concat(out, ", "), true
else
return "", false
end
else
return input_parm, false
end
end
p.getQualifierValue = function(frame)
local function outputValue(value)
local qnumber = "Q" .. v2value.datavalue.value["numeric-id"]
if (mw.wikibase.sitelink(qnumber)) then
out[#out + 1] =return "[[" .. mw.wikibase.sitelink(qnumber) .. "]]"
else
out[#out + 1] =return "[[:d:" .. qnumber .. "|" ..qnumber .. "]]<abbr title='" .. i18n["errors"]["local-article-not-found"] .. "'>[*]</abbr>"
end
end
return (getQualifier(frame, outputValue))
end
 
Line 705 ⟶ 710:
 
p.getRawQualifierValue = function(frame)
local function outputHook(value)
local propertyID = mw.text.trim(frame.args[1] or "")
if v2value.datavalue.value["numeric-id"] then
local qualifierID = mw.text.trim(frame.args[2] or "")
out[#out + 1] =return mw.wikibase.label("Q" .. v2value.datavalue.value["numeric-id"])
local input_parm = mw.text.trim(frame.args[3] or "")
if input_parm == "FETCH_WIKIDATA" then
local entity = mw.wikibase.getEntityObject()
if entity.claims[propertyID] ~= nil then
local out = {}
for k, v in pairs(entity.claims[propertyID]) do
for k2, v2 in pairs(v.qualifiers[qualifierID]) do
if v2.snaktype == 'value' then
if v2.datavalue.value["numeric-id"] then
out[#out + 1] = mw.wikibase.label("Q" .. v2.datavalue.value["numeric-id"])
else
out[#out + 1] = v2.datavalue.value
end
end
end
end
local ret = table.concat(out, ", ")
return string.upper(string.sub(ret, 1, 1)) .. string.sub(ret, 2)
else
return ""value.datavalue.value
end
else
return input_parm
end
local ret, gotData = getQualifier(frame, outputHook)
if gotData then
returnret = string.upper(string.sub(ret, 1, 1)) .. string.sub(ret, 2)
end
return ""ret
end
 
Line 761 ⟶ 752:
end
p.getQualifierDateValue = function(frame)
local propertyID = mw.text.trim(frame.args[1] or "")
local qualifierID = mw.text.trim(frame.args[2] or "")
local input_parm = mw.text.trim(frame.args[3] or "")
local date_format = mw.text.trim(frame.args[4] or i18n["datetime"]["default-format"])
local date_addon = mw.text.trim(frame.args[5] or i18n["datetime"]["default-addon"])
local function outputHook(value)
if input_parm == "FETCH_WIKIDATA" then
local entitytimestamp = mwvalue.wikibasedatavalue.getEntityObject()value.time
out[#out + 1] =return parseDateValue(timestamp, date_format, date_addon)
if entity.claims[propertyID] ~= nil then
local out = {}
for k, v in pairs(entity.claims[propertyID]) do
for k2, v2 in pairs(v.qualifiers[qualifierID]) do
if v2.snaktype == 'value' then
local timestamp = v2.datavalue.value.time
out[#out + 1] = parseDateValue(timestamp, date_format, date_addon)
end
end
end
return table.concat(out, ", ")
else
return ""
end
else
return input_parm
end
return (getQualifier(frame, outputHook))
end