Line 483:
Line 483:
end
end
return ret, backward
return ret, backward
−
end
−
−
--[[
−
Generate Wikidata tracking categories.
−
]]
−
local function makeWikidataCategories(qid)
−
local ret
−
local qid = qid or mw.ext.UnlinkedWikibase.getEntityId('enwiki')
−
-- TODO: Remove call to mw.wikibase
−
if mw.wikibase and current_page.namespace == 0 then
−
-- TODO: Remove call to mw.wikibase
−
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
−
-- TODO: Remove call to mw.wikibase
−
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
−
if snaktype == 'value' then
−
-- coordinates exist both here and on Wikidata, and can be compared.
−
ret = 'Coordinates on Wikidata'
−
elseif snaktype == 'somevalue' then
−
ret = 'Coordinates on Wikidata set to unknown value'
−
elseif snaktype == 'novalue' then
−
ret = 'Coordinates on Wikidata set to no value'
−
end
−
else
−
-- We have to either import the coordinates to Wikidata or remove them here.
−
ret = 'Coordinates not on Wikidata'
−
end
−
end
−
if ret then
−
return string.format('[[Category:%s]]', ret)
−
else
−
return ''
−
end
end
end
Line 615:
Line 583:
if not tonumber(args[1]) and not args[2] then
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
args[3] = args[1]; args[1] = nil
−
-- TODO: Remove call to mw.wikibase
+
−
local entity = mw.wikibase.getEntityObject(args.qid)
+
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
−
if entity
+
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
−
and entity.claims
+
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
−
and entity.claims.P625
+
if precision then
−
and entity.claims.P625[1].mainsnak.snaktype == 'value'
+
precision = -math_mod._round(math.log(precision)/math.log(10),0)
−
then
+
args[1] = math_mod._round(args[1],precision)
−
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
+
args[2] = math_mod._round(args[2],precision)
−
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
−
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
−
if precision then
−
precision = -math_mod._round(math.log(precision)/math.log(10),0)
−
args[1] = math_mod._round(args[1],precision)
−
args[2] = math_mod._round(args[2],precision)
−
end
end
end
end
end
Line 658:
Line 619:
text = text
text = text
.. displaytitle(contents, Notes)
.. displaytitle(contents, Notes)
−
.. makeWikidataCategories(args.qid)
end
end
if not args.nosave then
if not args.nosave then