Modulo:WikidataLoĝantaro
Aspekto
[antaŭrigardi] [redakti] [historio] [renovigi]
Dokumentado
La modulo ebligas uzi la loĝantaron (loĝantaro (P1082)) por la lasta dato (dato (P585)) el wikidatumoj.
Ĝi proponas la funkciojn nombro
kaj dato
kaj por labori ekster la artikolo oni povas ankaŭ uzi nombroQ
kaj datoQ
, kiuj estas eviteblaj, ĉar ili kostas multa da tempo de kalkulo.
Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.) |
|
local p = {}
lang = 'eo'
-- aranĝas zorgigan kategorion nur en la artikola nomspaco
local kategorio = ""
currentTitle = mw.title.getCurrentTitle()
local ns = currentTitle.namespace
if ns == 0 then kategorio = "[[Kategorio:Artikoloj kun loĝantaro el Vikidatumoj sen dato]]"
end
function p.dump()
return mw.dumpObject(mw.wikibase.getEntityObject())
end
function p.nombro()
local entity = mw.wikibase.getEntity()
if not entity then
return '<span class="error">La artikolo ne estas ankaŭ ligata kun vikidatumoj</span>'
end
local pop = entity:getBestStatements( 'P1082' )
if (#pop == 0) or (pop[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = pop[1].mainsnak.datavalue.value.amount
local i=string.find(x,"±")
if i==nil then i=string.len(x)+1 end
x=string.sub(x,1,i-1)
x=string.gsub( x," ", "" )
x=string.gsub( x,"+", "" )
return x
end
function p.nombroQ(frame)
local entity = mw.wikibase.getEntity(frame.args[1])
if not entity then
return '<span class="error">ne estas ligilo</span>'
end
local pop = entity:getBestStatements( 'P1082' )
if (#pop == 0) or (pop[1].mainsnak.snaktype ~= "value") then
return "?"
end
local x = pop[1].mainsnak.datavalue.value.amount
local i=string.find(x,"±")
if i==nil then i=string.len(x)+1 end
x=string.sub(x,1,i-1)
x=string.gsub( x," ", "" )
x=string.gsub( x,"+", "" )
x=tonumber (x)
x=mw.getLanguage('eo'):formatNum(x)
if x==nil then x ="?" end
return x
end
function p.dato() -- jaro de la loĝantaro
local entity = mw.wikibase.getEntityObject()
if not entity then
return nil
end
local pop = entity:getBestStatements( 'P1082' )
if (#pop == 0) or (pop[1].mainsnak.snaktype ~= "value") then
return nil
end
local function dato2()
v =pop[1].qualifiers["P585"]
if (v==nil) then return nil else v =v[1].datavalue.value.time end
return v
end
local provo, v=pcall(dato2,"ne estas dato en wikidatumoj")
if provo and v ~= nil then
v=string.sub(v,2,5) -- nur la jaro
return v
else
return '<span class="error">dato forestas en Vikidatumoj</span>' .. kategorio
end
end
function p.datoQ(frame) -- jaro de la loĝantaro por la artikolo Qxxx
local entity = mw.wikibase.getEntityObject(frame.args[1])
if not entity then
return nil
end
local pop = entity:getBestStatements( 'P1082' )
if (#pop == 0) or (pop[1].mainsnak.snaktype ~= "value") then
return nil
end
local function dato2()
v = pop[1].qualifiers["P585"]
if (v==nil) then return nil else v =v[1].datavalue.value.time end
v=string.sub(v,2,5) -- nur la jaro
return v
end
local provo, v=pcall(dato2,"ne estas dato en wikidatumoj")
if provo and v ~= nil then
v=string.sub(v,2,5) -- nur la jaro
return v
else
return '<span class="error">dato forestas en Vikidatumoj</span>' .. kategorio
end
end
return p