Modulo:Geografiaĵoj
Aspekto
[antaŭrigardi] [redakti] [historio] [renovigi]
Dokumentado
Ŝablona programado | Diskutoj | Lua | Testoj | Subpaĝoj | |||
---|---|---|---|---|---|---|---|
Modulo | Esperanto | English
|
Modulo: | Dokumentado |
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.) |
|
-- modulo Geografiaĵoj, 2024-05-18
-- ĉi tiu modulo celas aranĝi la ŝablonon {{informkesto geografiaĵo}}, sed ankaŭ uzeblas por aliaj informkestoj kiel ekzemple {{informkesto urbo}}.
-- aliaj moduloj
-- bonvolu atenti, ke certaj specoj de submoduloj devas subteni la parametron wd por testoj ekster la artikola nomspaco
local kalkuli = require( "Modulo:Math")
local wikidata = require ("Modulo:Wikidata")
local wikidataGeo = require ("Modulo:Wikidata/geografio")
local lucky_bildo, wikidataBildo = pcall ( require,"Modulo:Wikidata/bildoj" )
local listoj = require ("Modulo:Listutil")
local bildoj = require ("Modulo:InfoboxImage")
local prenubildon = require ("Modulo:Portalo").image
local kategorioj = require("Modulo:CatUtil")
local informkesto = require("Modulo:Informkesto")
local kontrasto = require ("Modulo:Color contrast")
local ligiloj = require ("Modulo:Linkutil")
local datoj = require("Modulo:Datoj")
-- propraj submoduloj
local koloroj=require ("Modulo:Geografiaĵoj/koloroj")
local type_atributo=require ("Modulo:Geografiaĵoj/type:")
local mapsimbolo=require ("Modulo:Geografiaĵoj/simbolo")
local fonbildo=require ("Modulo:Geografiaĵoj/fonobildo")
local tipoareo=require ("Modulo:Geografiaĵoj/areo")
-- variabloj por aŭtomataj kategorioj
local kategorio = ""
currentTitle = mw.title.getCurrentTitle()
local ns = currentTitle.namespace
local kat1 = ""
local wdidstirilo = true
local wdref = ""
local artref = ""
local nelogh = "" -- por insuloj, insularoj ktp.
local nelogh2 = "" -- por atoloj
if ns == 0 then
-- komuna parto por du ŝablonoj: [[Kategorio:{{{1|}}} kun ŝablono Geokesto]] kaj [[Kategorio:{{{tipo|}}} kun Informkesto urbo]]. {{{1|}}} resp. {{{tipo|}}} estas la unua nenomita parametro de {{Geokesto}}, sed nomita de {{Informkesto urbo}}
kat1 = " kun "
wdidstirilo=false
wdref = false
artref = false
nenumero=false
subshablono = false
nelogh = false
nelogh2 = false
end
local function argumentoj(args, par)
if par ~= "" and par ~= nil then
local varianto = mw.ustring.gsub(par, "_", " ") -- ŝanĝo de _ el parametro al spaco
local varianto2 = mw.ustring.upper(par) -- ŝanĝo al majusklaj literoj
local varianto3 = mw.ustring.upper(mw.ustring.sub(par, 1, 1)) .. mw.ustring.sub(par, 2) -- nur la unua litero fariĝas majusklo
local r = args["" .. par] or args["" .. varianto] or args["" .. varianto2] or args["" .. varianto3] or ""
if r ~= "" then
return r
end
end
end
-- por koordinataj parametroj
local function koordargumentoj(args, a1)
if a1 ~= "" and a1 ~= nil then
if a1 == "situo" then
a1 = ""
else
a1 = a1 .. "_"
end
local lat_d = argumentoj(args, a1 .. "lat_d") or argumentoj(args,"latitudo-gradoj")
local lat_m = argumentoj(args, a1 .. "lat_m") or argumentoj(args,"latitudo-minutoj")
local lat_s = argumentoj(args, a1 .. "lat_s") or argumentoj(args,"latitudo-sekundoj")
local lat_NS = argumentoj(args, a1 .. "lat_NS") or argumentoj(args,"latitudo-direkto")
local long_d = argumentoj(args, a1 .. "long_d") or argumentoj(args,"longitudo-gradoj")
local long_m = argumentoj(args, a1 .. "long_m") or argumentoj(args,"longitudo-minutoj")
local long_s = argumentoj(args, a1 .. "long_s") or argumentoj(args,"longitudo-sekundoj")
local long_EW = argumentoj(args, a1 .. "long_EW") or argumentoj(args,"longitudo-direkto")
if lat_d ~= "" and lat_d ~= nil and long_d ~= "" and long_d ~= nil then
if lat_m ~= "" and lat_m ~= nil then
lat_d = lat_d .. "/" .. lat_m
if lat_s ~= "" and lat_s ~= nil then
lat_d = lat_d .. "/" .. lat_s
if lat_NS ~= "" and lat_NS ~= nil then
lat_d = lat_d .. "/" .. lat_NS
end
end
end
if long_m ~= "" and long_m ~= nil then
long_d = long_d .. "/" .. long_m
if long_s ~= "" and long_s ~= nil then
long_d = long_d .. "/" .. long_s
if long_EW ~= "" and long_EW ~= nil then
long_d = long_d .. "/" .. long_EW
end
end
end
return lat_d, long_d
end
end -- a1
end
-- disigo de helpa parametro por koordinatoj
local function koordtipo(teksto)
if teksto ~= "" and teksto ~= nil then
local strings = mw.text.split(teksto, "_", plain)
local regiono = ""
local tipo = ""
for k, v in pairs(strings) do
if mw.ustring.sub(v,1,7) == "region:" then
regiono = mw.ustring.sub(v,8)
elseif mw.ustring.sub(v,1,5) == "type:" then
tipo = mw.ustring.sub(v,6)
end
end
return regiono, tipo
end
end
-- Vikidatumaj helpaj funkcioj
-- transprenas vikidatuman eron, se ne temas pri bildo
local function wdparam(pk,wdid,ref)
-- analizo, ĉu pk enhavas valoron.
if pk ~= "" and pk ~= nil then
local r, r2
if ref == "auto" then
if wdid ~= "" and wdid ~= nil then
-- r = shablonoref(pk,wdid) wikidata.claim({args={pk,id=wdid,references="jes"} })
r, ref = wikidata.claim({args={pk,id=wdid,references="raw"} })
else
-- r = shablonoref(pk) wikidata.claim({args={pk,references="jes"} })
r, ref = wikidata.claim({args={pk,references="raw"} })
end
if r ~= "" and r ~= nil then
if ref ~= "auto" and ref ~= nil and ref ~= "" then
wdref = true
end
return r, ref
end
else
if wdid ~= "" and wdid ~= nil then
r = wikidata.claim({args={pk,id=wdid} })
else
r = wikidata.claim({args={pk} })
end
if r ~= "" and r ~= nil then
return r, ref
end
end
end
end
-- transprenas vikidatuman eron, se ne temas pri bildo, sed kun "parameter=link"
local function wdparam2(pk,wdid,ref)
-- analizo, ĉu pk enhavas valoron.
if pk ~= "" and pk ~= nil then
local r, r2
if ref == "auto" then
if wdid ~= "" and wdid ~= nil then
-- r = shablonoref(pk,wdid) wikidata.claim({args={pk,id=wdid,references="jes"} })
r, ref = wikidata.claim({args={pk,id=wdid,references="raw", parameter="link"} })
else
-- r = shablonoref(pk) wikidata.claim({args={pk,references="jes"} })
r, ref = wikidata.claim({args={pk,references="raw", parameter="link"} })
end
if r ~= "" and r ~= nil then
if ref ~= "auto" and ref ~= nil and ref ~= "" then
wdref = true
end
return r, ref
end
else
if wdid ~= "" and wdid ~= nil then
r = wikidata.claim({args={pk,id=wdid, parameter="link"} })
else
r = wikidata.claim({args={pk, parameter="link"} })
end
if r ~= "" and r ~= nil then
return r, ref
end
end
end
end
local function wdlink (id, pkodo)
-- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P374|[+]]]</span>
if pkodo ~= "" and pkodo ~= nil then
local ligilo
if id ~= "" and id ~= nil then
ligilo = id
else
ligilo = wikidata.pageId({args = {} }) or ""
end
if ligilo then
ligilo = ' <span class="el_wd">[[:d:' .. ligilo .. "#" .. pkodo .. '|[+]]]</span>'
end
return ligilo
end
end
-- helpa funkcio por "kodo" kaj "laŭ"
-- ankoraŭ malkompleta
local function lauparam(args,a2,wdid) -- por kodo
if a2 ~= "" and a2 ~= nil then
local c1 = ""
local c2 = ""
local a2a = ""
a2 = argumentoj(args,a2)
if a2 == "P374" or a2 == "INSEE" then
-- Francio
c1 = "INSEE kodo"
a2a = "P374"
elseif a2 == "P782" or a2 == "LAU" then
-- Eŭropa unio
c1 = "LAU kodo"
a2a = "P782"
elseif a2 == "P382" or a2 == "CBS" then
-- Nederlando
c1 = "CBS kodo"
a2a = "P382"
elseif a2 == "P439" or a2 == "Komunuma ŝlosilo" then
-- Germanio
c1 = "Komunuma ŝlosilo"
a2a = "P439"
elseif a2 == "P1388" or a2 == "Regiona ŝlosilo" then
-- Germanio
c1 = "Regiona ŝlosilo"
a2a = "P1388"
elseif a2 == "P525" or a2 == "Sveda komunuma ŝlosilo" then
-- Svedio
c1 = "Sveda komunuma ŝlosilo"
a2a = "P525"
elseif a2 == "P721" or a2 == "OKATO" then
-- Ruslando
c1 = "OKATO"
a2a = "P721"
elseif a2 == "P764" or a2 == "OKTMO" then
-- Ruslando
c1 = "OKTMO"
a2a = "P764"
elseif a2 == "P1653" or a2 == "TERYT" then
-- Pollando
c1 = "TERYT"
a2a = "P1653"
end
c2 = wdparam(a2a,wdid)
if c2 ~= "" and c2 ~= nil then
return c1, c2, a2a
end
end
end
-- aldonaj parametroj por bildoj
local function bildargumentoj(args, par, parto)
if par == "bildo" or par == "dosiero" or par == "flago" or par == "blazono" or par == "mapo" or par == "foto" or par == "portreto" then
local r = ""
if parto == "priskribo" then
r = "priskribo de " .. par
elseif parto == "grandeco" then
r = "grandeco de " .. par
end
if r ~= "" then
r = argumentoj(args,r)
if r ~= "" and r ~= nil then
return r
end
end
end
end
local function simbolo_priskribo (pk2, wdid)
local r
if pk2 == 'P163' or pk2 == 'P237' then
local nid
if wdid ~= "" and wdid ~= nil then
nid = wikidata.claim({args = { pk2, id = wdid, parameter='numeric-id'} })
else
nid = wikidata.claim({args = { pk2, parameter='numeric-id'} })
end
if nid ~= "" and nid ~= nil then
local l
if pk2 == 'P163' then
l = 'Flago'
elseif pk2 == 'P237' then
l = 'Blazono'
end
r = '[[Specialaĵo:AboutTopic/Q' .. nid .. '|' .. l .. ']]'
end
end
return r or ""
end
local function bildaro (args, param, a1, a1_a, a2, a2_a, par, par_a, pri, pk, pk2, wdid)
local bildo
local priskriboB
local wd
local priskribo = argumentoj(args, a1) or argumentoj(args, a1_a) or bildargumentoj(args, par, "priskribo") or bildargumentoj(args, par_a, "priskribo")
local grando = argumentoj (args, a2) or argumentoj (args, a2_a) or bildargumentoj(args, par, "grandeco") or bildargumentoj(args, par_a, "grandeco")
if param ~= "" and param ~= nil and param ~= "ne" and param ~= "neniu" then
-- local bildo = bildoj.InfoboxImage({args={image=param,size=args[a2],sizedefault="frameless",center="yes", caption=args[a1]} })
bildo = bildoj.InfoboxImage({args={image=param,size=grando,sizedefault="120px",center="yes", alt=priskribo} })
if priskribo ~= "" and priskribo ~= nil then
priskriboB = priskribo
else
local priskriboT = simbolo_priskribo (pk2, wdid)
if priskriboT ~= "" then
priskriboB = priskriboT
else
priskriboB = pri
end
end
elseif param ~= "ne" and param ~= "neniu" then
if pK ~= "" and lucky_bildo then
-- {{#invoke:Wikidata/bildoj|bildoj|priskribo de bildoj={{{priskribo de bildoj|}}}|priskribo de bildo={{{priskribo de bildoj|{{{bildo-priskribo|}}}}}}}}
-- local bildo = wikidataBildo.bildoj({args={grandeco=args[a2],["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=args[a1]} })
local priskriboA
if wdid ~= "" and wdid ~= nil then
bildo, priskriboA = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="120px",["priskribo de bildoj"]=priskribo,["defaŭlta priskribo de bildo"]=pri,pkodo=pk, pkodo2=pk2,id=wdid,["ĉu priskribo aparte"]="jes",grupo="ne"} })
else
bildo, priskriboA = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="120px",["priskribo de bildoj"]=priskribo,["defaŭlta priskribo de bildo"]=pri,pkodo=pk, pkodo2=pk2,["ĉu priskribo aparte"]="jes",grupo="ne"} })
end
if priskribo ~= "" and priskribo ~= nil then
priskriboB = priskribo
wd = 1
elseif priskribo ~= priskriboA and priskriboA ~= pri then
priskriboB = priskriboA
wd = 2
else
priskriboB = pri
wd = 1
end
if bildo == "" or bildo == nil then
wd = nil
end
end
end
return bildo, priskriboB, wd
end
-- helpa funkcio por kontrasto
local function kolorkontrasta_rilatumo (teksto, fono)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Kolorkontrasta rilatumo",
args ={
teksto, fono
}
}
return n
end
-- tabelliniaj funkcioj
-- tabela kaplinio
-- titolo - teksto por la titola linio
-- fono - fona koloro
-- v - varianto
-- wd - ĉu Vikidatuma ero?
local function tabelkapo(titolo, fono, v, wd, klaso, montrilo)
if v == "caption" then
-- por la html-etikedo "caption"
local colspan ='2'
local tabelkapo = tabelo:tag('caption')
:attr({colspan = colspan})
:css(style)
:wikitext(text)
:done()
else
-- por la html-etikedoj "tr" kaj "th"
-- kaplinio
if klaso ~= "" and klaso ~= nil and type(klaso) == "string" then
klaso = "kaplinio " .. klaso
else
klaso = "kaplinio mapo"
end
if wd == "jes" then
klaso = klaso .. " wikidata-content"
end
local tabelkapo
if montrilo ~= "" and montrilo ~= nil then
tabelkapo = tabelo:tag('tr')
:attr('title',montrilo)
:addClass('mergedtoprow')
else
tabelkapo = tabelo:tag('tr')
end
local teksto = "#000"
-- se koloroj havas tro malaltan kontraston, korektu la tekstokoloron
local testo = kolorkontrasta_rilatumo(teksto,fono)
testo = tonumber(testo)
if type(testo) == 'number' and testo < 4.5 then
teksto = "white"
end
-- kaplinia ĉelo
local kapchelo = tabelkapo:tag('th')
:addClass(klaso)
:attr('colspan','2')
:css('color',teksto)
:css('background-color',fono)
:css('text-align','center')
:css('padding','0.2em')
:wikitext(titolo)
:done()
:newline()
end
end
-- tabela subtitilo
local function tabelsubtitolo(titolo, fono, montrilo)
if titolo == nil then
titolo = ""
end
local subtitolo1
if montrilo ~= "" and montrilo ~= nil then
subtitolo1 = tabelo:tag('tr')
:attr('title',montrilo)
:addClass('mergedrow')
else
subtitolo1 = tabelo:tag('tr')
end
local teksto = "#000"
-- se koloroj havas tro malaltan kontraston, korektu la tekstokoloron
local testo = kolorkontrasta_rilatumo(teksto,fono)
testo = tonumber(testo)
if type(testo) == 'number' and testo < 4.5 then
teksto = "white"
end
if fono ~= "" and fono ~= nil then
local titol1chelo = subtitolo1:tag('th')
:css('background-color', fono)
:css('color',teksto)
:css('border-top','1px solid ' .. fono)
:css('border-bottom','1px solid ' .. fono)
:css('text-align','center')
:attr('colspan','2')
:css('padding','0.4em 0.2em')
:wikitext(titolo)
:done()
:newline()
else
local titol1chelo = subtitolo1:tag('th')
:css('text-align','center')
:attr('colspan','2')
:wikitext(titolo)
:done()
:newline()
end
end
-- bilda ĉelo por unuopa bildo
local function unuopabildo(bildo, wd)
if bildo == nil then
bildo = ""
end
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local bildo1 = tabelo:tag("tr")
local bildchelo = bildo1:tag("td")
:addClass(wd)
:attr('colspan','2')
:css('font-size','smaller')
:css('text-align','center')
:css('padding','0.4em 0.2em')
:wikitext(bildo)
end
-- bilda ĉelo por duopa bildo
local function duopajbildoj(bildo1, bildo2, priskribo1, priskribo2, wd, wd2)
if bildo1 == nil then
bildo1 = ""
end
if bildo2 == nil then
bildo2 = ""
end
local bildoj = tabelo:tag("tr")
local klaso1 = ""
local klaso2 = ""
if wd == 1 or wd == 2 then
klaso1 = "wikidata-content"
end
local bildchelo = bildoj:tag("td")
:addClass(klaso1)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(bildo1)
if wd2 == 1 or wd2 == 2 then
klaso2 = "wikidata-content"
end
local bildchelo = bildoj:tag("td")
:addClass(klaso2)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(bildo2)
if (priskribo1 ~= "" and priskribo1 ~= nil) or (priskribo2 ~= "" and priskribo2 ~= nil) then
local priskriboj = tabelo:tag("tr")
if priskribo1 == nil then
priskribo1 = ""
end
if wd == 2 then
klaso1 = "wikidata-content"
else
klaso1 = ""
end
local priskribochelo = priskriboj:tag("td")
:addClass(klaso1)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(priskribo1)
if priskribo2 == nil then
priskribo2 = ""
end
if wd2 == 2 then
klaso2 = "wikidata-content"
else
klaso2 = ""
end
local priskribochelo = priskriboj:tag("td")
:addClass(klaso2)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(priskribo2)
end
end
-- helpaj funkcioj sen ŝablonoj
-- c1 - enhavo de ĉelo 1
-- c2 - enhavo de ĉelo 2
-- wd - ĉu datoj el Vikidatuma ero
local function aldonulinion (c1, c2, wd, v, montrilo)
--local tabellinio = mw.html.create("tr")
local tabellinio
if montrilo ~= "" and montrilo ~= nil then
tabellinio = tabelo:tag('tr')
:attr('title',montrilo)
:addClass('mergedrow')
else
tabellinio = tabelo:tag('tr')
end
local etikedo = "th"
if mw.ustring.sub(c1,1,3) == " - " then
v = "td"
end
if v == "td" then
etikedo = v
end
local chelo1
if montrilo ~= '' and montrilo ~= nil then
chelo1 = tabellinio:tag(etikedo)
:css('text-align','left')
:css('padding','0.4em 0.2em 0.4em 0.8em')
:css('white-space','nowrap')
:wikitext(c1)
:done()
else
chelo1 = tabellinio:tag(etikedo)
:css('text-align','left')
:wikitext(c1)
:done()
end
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local chelo2
if montrilo ~= '' and montrilo ~= nil then
chelo2 = tabellinio:tag('td')
:addClass(wd)
:css('padding','0.4em 0.2em 0.4em 0.8em')
:wikitext(c2)
:done()
:newline()
else
chelo2 = tabellinio:tag('td')
:addClass(wd)
:wikitext(c2)
:done()
:newline()
end
end
-- unuopa ĉelo
-- c - enhavo de la ĉelo
-- v - varianto de ĉelo
-- wd - ĉu datoj el Vikidatuma ero
local function aldonuchelon (c, v, wd, montrilo)
local t = ""
local css_klaso = "mergedrow"
local shtopado = '0.4em 0.2em'
if v == "titolo" then
t = "th"
elseif v == "linio" then
t = "td"
css_klaso = "mergedtoprow"
shtopado = '0'
else
t = "td"
end
if montrilo == nil then
montrilo = ""
end
local tabellinio = tabelo:tag('tr')
:attr('title',montrilo)
:addClass(css_klaso)
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local chelo = tabellinio:tag(t)
:addClass(wd)
:attr('colspan','2')
:css('text-align','center')
:css('padding',shtopado)
:wikitext(c)
:done()
:newline()
end
-- por aldono de piednoto al teksto
local function notaldono(noto, param)
if noto ~= "" and noto ~= nil then
param = param .. " ''" .. noto .. "''" -- aldonas noton kursive
return param
else
return param
end
end
-- por aldono de referenco
local function refaldono(referenco, param, refnomo, refnomodua)
if (referenco ~= "" and referenco ~= nil) or (refnomo ~= "" and refnomo ~= nil) then
local r
local frame = mw.getCurrentFrame()
if referenco ~= "" and referenco ~= nil then
local strings= mw.text.split(referenco, "///", plain)
local nombro = #strings
if nombro > 1 then
for k, ref in pairs(strings) do
if refnomo ~= "" and refnomo ~= nil then
if refnomodua ~= "" and refnomodua ~= nil then
r = frame:extensionTag('ref', {name= refnomo } )
else
r = frame:extensionTag('ref', ref, {name=refnomo} )
end
param = param .. r
elseif ref ~= "" and ref ~= nil then
r = frame:extensionTag('ref', ref )
param = param .. r
end
end
return param
end
end
if refnomo ~= "" and refnomo ~= nil then
if refnomodua ~= "" and refnomodua ~= nil then
r = frame:extensionTag('ref', {name= refnomo } )
else
r = frame:extensionTag('ref', referenco, {name=refnomo} )
end
param = param .. r
artref = true
return param
elseif referenco ~= "" and referenco ~= nil then
r = frame:extensionTag('ref', referenco )
param = param .. r
artref = true
return param
end
else
return param
end
end
local function kesteroj(nomo, trajto, k)
if trajto == 'ĉelo' then
tabelo:wikitext('<tr><td colspan="2" style="padding:0"><div>\n')
if k == 'kaŝu' then
tabelo:wikitext('{| class="collapsible collapsed" style="width:23em"\n')
else
tabelo:wikitext('{| style="width:23em"\n')
end
tabelo:wikitext('|-\n')
end
--tabelo:wikitext('\n<nowiki/>\n')
tabelo:wikitext('\n\n')
tabelo:wikitext(nomo)
if trajto == 'ĉelo' then
tabelo:wikitext('\n\n|}')
tabelo:wikitext('\n\n</div></td></tr>')
end
end
-- kalkulaj funkcioj
-- transkalkulas al kvadrataj kilometroj
local function areoKM2(areo,unuo,subfunkcio,rondumo)
local ru = "[[Kvadrata kilometro|km²]]"
local rondumo = tonumber(rondumo)
if rondumo == nil or rondumo == "" then
rondumo = 0
end
if areo ~= nil and areo ~= "" and unuo ~= nil and unuo ~= "" then
local r = 1
if unuo == "km²" or unuo == "km2" or unuo == "km" then -- jam estas km²
r = areo
r = kalkuli._round(r,rondumo)
elseif unuo == "ha" then -- el hektaroj al km²
r = areo / 100
r = kalkuli._round(r,rondumo)
elseif unuo == "m²" then -- el metroj al km²
r = areo / 1e6
r = kalkuli._round(r,rondumo)
elseif unuo == "cm²" then -- el cm² al km²
r = areo / 1e10
r = kalkuli._round(r,rondumo)
else
r = areo -- ĉe nekonata unuo, redonu la numeron senŝanĝe, supozante, ke estas jam km²
r = kalkuli._round(r,rondumo)
end
if subfunkcio == "jes" then
return r -- eldono sen unuo
else
r= formatnum(r) -- elvoko de helpa funkcio, kiu mem elvokas la malkomponilan funkcion {{formatnum:}}
return r .. " " .. ru -- eldono kun unuo
end
-- else
-- return "neniuj valoroj"
end
end
-- transkalkulas al hektaroj
local function areoHA(areo, unuo, subfunkcio,rondumo)
local ru = "[[Hektaro|ha]]"
local rondumo = tonumber(rondumo)
if rondumo == nil or rondumo == "" then
rondumo = 0
end
if areo ~= nil and areo ~= "" and unuo ~= nil and unuo ~= "" then
local r = 1
if unuo == "km²" or unuo == "km2" or unuo == "km" then -- el km² al hektaroj
r = areo * 100
r = kalkuli._round(r,rondumo)
elseif unuo == "ha" then -- jam hektaroj
r = areo
r = kalkuli._round(r,rondumo)
elseif unuo == "m²" then -- el metroj al hektaroj
r = areo / 1e4
r = kalkuli._round(r,rondumo)
elseif unuo == "cm²" then -- el cm² al hektaroj
r = areo / 1e8
r = kalkuli._round(r,rondumo)
else
r = areo * 100 -- ĉe nekonata unuo, kalkulu kvazaŭ jam estus km²
r = kalkuli._round(r,rondumo)
end
if subfunkcio == "jes" then
return r -- eldono sen unuo
else
r= formatnum(r) -- elvoko de helpa funkcio, kiu mem elvokas la malkomponilan funkcion {{formatnum:}}
return r .. " " .. ru -- eldono kun unuo
end
-- else
-- return "neniuj valoroj"
end
end
-- enplektas la submodulon pri areo, ĉu estu defaŭlte km² aŭ m²
local function areotipo(tipo)
local r
local test = tipoareo.areo(tipo)
if test ~= "" and test ~= nil then
r = test
end
return r
end
-- por landaj flagoj kun sekva teksto
local function flago(nomo)
if nomo == "" or nomo == nil then
return
end
local testo = ligiloj._chuligilo2(nomo)
local ligilo = ""
if testo == "ligu" then
ligilo = "[[" .. nomo .. "]]"
else
ligilo = nomo
nomo = ligiloj._delink(nomo)
end
local n = prenubildon{nomo} -- ne estu ronda krampo, ĉar estas importita funkcio
if n ~= "Portal-puzzle.svg" and n ~= nil then
n = "[[Dosiero:" .. n .. "|18px]] " .. ligilo
return n
else
return ligilo
end
end
-- malkomponilaj funkcioj
-- formatigi numeron
function formatnum(numero)
local frame = mw.getCurrentFrame()
local n = tonumber(numero)
if n ~= nil then
local r = frame:callParserFunction( "formatnum", n )
return r
end
end
-- ŝablonelvokoj
-- por "PAGENAMEBASE"
local function paghenamebase ()
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="PAGENAMEBASE",
}
return n
end
-- por koordinatoj
local function koordinatoj(latitudo, longitudo, regiono, tipo, nomo, supre, teksto, globo )
local t = "dms"
if teksto ~= "" and teksto ~= nil then
t = teksto
end
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Koordinato",
args ={
NS=latitudo,
EW=longitudo,
region=regiono,
type=tipo,
name=nomo,
text=t, -- la koordinatoj aperu en la informkesto
article=supre, -- ĉu ankaŭ supre? se jes, la parametro havu la valoron /
globe=globo
}
}
return n
end
-- mapo per la ŝablono {{Geokesto2 mapo2}}, kiu iel elvokas {{Situo sur mapo}}
local function situomapo(mapo,aliamapo,mapofono,lat,lon,markocelo,tipo,priskribo,neniukoordinato,mapospeco,regiono,tipo2,montru,angulojes,args,marko,markospeco,markogrando,teksto)
local x, y
if neniukoordinato ~= "" and neniukoordinato ~= nil then
x = 50
y = 50
end
local angulmapo, angulmapo2, aldono, anguldosiero, stilo, angulo, angulstilo, angullargho
if angulojes == "jes" then
-- | Mapo en angulo = | angula mapo = | aldono = | dosiero = | stilo = | angulo = | angula stilo = | angula larĝo =
angulmapo = args["Mapo en angulo"]
angulmapo2 = argumentoj(args,"angula mapo")
aldono = argumentoj(args,"aldono")
anguldosiero = argumentoj(args,"anguldosiero") or argumentoj(args,"angulbildo")
stilo = argumentoj(args,"mapo-stilo") -- ŝanĝenda por eviti kolizion kun la enhava parametro "stilo"
angulo = argumentoj(args,"angulo")
angulstilo = argumentoj(args,"angula stilo")
angullargho = argumentoj(args,"angula larĝo")
end
-- {{#if:{{{tipo|}}}|{{Geokesto2 mapo/simbolo|{{{tipo|}}}}}|{{{Marko|Red_pog.svg}}} }}
local Marko = "Red_pog.svg"
if markospeco ~= "" and markospeco ~= nil then
Marko = ""
elseif marko ~= "" and marko ~= nil then
Marko = marko
else
if tipo ~= "" and tipo ~= nil then
local m = mapsimbolo.simbolo(tipo)
if m ~= "Red_pog.svg" then
Marko = m
end
end
end
local frame = mw.getCurrentFrame()
if angulmapo == "" then
local s = frame:expandTemplate {
title="Surmapo",
args={
mapo
}
}
angulmapo = s
end
local n = frame:expandTemplate {
title="Situo sur mapo",
args ={
mapo,
Alia_mapo=aliamapo,
Mapo_fono=mapofono,
Lat=lat,
Lon=lon,
Teksto=teksto,
['Teksto-loko']="none",
['Marko-celo']=markocelo,
Marko=Marko,
Markospeco=markospeco,
['Marko-ampl']=markogrando,
['Larĝo']=250,
Floso="center",
Titolo=priskribo,
['Loko de titolo']="centre",
X=x,
Y=y,
Mapospeco=mapospeco,
region=regiono,
type=tipo2,
montrukoordinatojn=montru,
senombre="jes",
Bordo="none",
wd=wd,
['Mapo en angulo'] = angulmapo,
mapo=angulmapo2,
aldono=aldono,
dosiero=anguldosiero,
stilo=stilo,
angulo=angulo,
['angula stilo']=angulstilo,
['angula larĝo']=angullargho
}
}
return n
end
-- mapo per la ŝablono {{Situo sur mapo}}, sed ĉikaze sen koordinatoj
local function situomaposenmarko(mapo,priskribo,mapofono,tipo, globo)
local frame = mw.getCurrentFrame()
local m = "Tero"
if globo == "moon" then
m = "Luno"
-- elseif globo == "mars" then
-- m = "marso"
end
local n = frame:expandTemplate {
title="Situo sur mapo",
args ={
m,
Alia_mapo=mapo,
Titolo=priskribo,
X="50", -- malaperigas koordinatojn
Y="50", -- malaperigas koordinatojn
Mapo_fono=mapofono,
montrukoordinatojn="ne",
['Loko de titolo']="centre",
Floso="center",
Bordo="none",
senombre="jes"
}
}
return n
end
-- "tradukas" regiono-ISO al la nomo de la mapo
-- {{Info ISO-3166-2 |code={{#if:{{{1|}}}|{{{1}}}|??}} |map}}
local function isomapilo(isokodo)
local kodo
if isokodo ~= "" and isokodo ~= nil then
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title= "ParmPart",
args = {
"1",
isokodo
}
}
--kodo = isokodo
kodo = n
else
kodo = "??"
end
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Info ISO-3166-2",
args ={
code=kodo,
"map"
}
}
return n
end
-- komutebla mapo
local function situomapo2(lokigo,latitudo,longitudo,nomo,punkto,tipo,marko,mapotipo, tipo1,alt1,mapo1,fonamapo1, tipo2,alt2,mapo2,fonamapo2, tipo3,alt3,mapo3,fonamapo3, tipo4,alt4,mapo4,fonamapo4,ligiltipo,regiono,markospeco)
local frame = mw.getCurrentFrame()
if tipo ~= "" and tipo ~= nil and (marko == "" or marko ==nil) and (markospeco == "" or markospeco == nil) then -- tipo de geografiaĵo
marko=mapsimbolo.simbolo(tipo) or "Red_pog.svg"
elseif markospeco ~= "" and markospeco ~= nil then
marko = ""
else
if marko == "" or marko == nil then
marko = "Red_pog.svg"
end
end
local komenco = '<div style="font-size:112%">'
komenco = komenco .. "\n\n" .. frame:expandTemplate {
title="Informkesto/Komenco",
args={
senombre="jes",
klaso="centered"
}
}
local enhavo = frame:expandTemplate {
title="Informkesto/Geografia lokigo multobla",
args ={
['geografia lokigo']=lokigo,
latitudo=latitudo,
longitudo=longitudo,
-- loknomo=nomo,
punkto=punkto,
Marko=marko,
tipo=mapotipo, -- tipoj de mapo
tipo1=tipo1,
alt1=alt1,
mapo1=mapo1,
['fona mapo1']=fonamapo1,
tipo2=tipo2,
alt2=alt2,
mapo2=mapo2,
['fona mapo2']=fonamapo2,
tipo3=tipo3,
alt3=alt3,
mapo3=mapo3,
['fona mapo3']=fonamapo3,
tipo4=tipo4,
alt4=alt4,
mapo4=mapo4,
['fona mapo4']=fonamapo4,
type=ligiltipo,
['regiono-ISO']=regiono,
Markospeco=markospeco
}
}
local fino = frame:expandTemplate {
title="Informkesto/Fino"
}
fino = fino .. "\n\n" .. "</div>"
n = "\n" .. komenco .. "\n\n" .. enhavo .. "\n\n" .. fino .. "\n\n" -- linisaltoj necesas, ĉar alie ne funkcias la Vikia sintakso por tabeloj. Vidu la dokumentadon de {{Informkest}}
return n
end
-- por alteco
local function alteco(alto,kodo)
local frame = mw.getCurrentFrame()
local r
if kodo == "AT" or kodo == "CH" or kodo == "HU" or kodo == "LI" or kodo == "SK" or kodo == "CZ" or kodo == "FR" or kodo == "IT" or kodo == "JP"
or kodo == "NL" or kodo == "PL" or kodo == "SE" or kodo == "ES" or kodo == "BA" or kodo == "HR" or kodo == "ME" or kodo == "MK" or kodo == "RS" or kodo == "SI" then
r = frame:expandTemplate {
title="Alto",
args={
alto,
kodo
}
}
elseif kodo == "DE" then
r = frame:expandTemplate {
title="Alto",
args={
alto,
"DE-NHN"
}
}
else
r = frame:expandTemplate {
title="Alto",
args={
alto
}
}
end
return r
end
local function CoordinateLAT(lat)
local frame = mw.getCurrentFrame()
local r
r = frame:expandTemplate {
title="CoordinateLAT",
args={
lat
}
}
return r
end
local function CoordinateLONG(long)
local frame = mw.getCurrentFrame()
local r
r = frame:expandTemplate {
title="CoordinateLONG",
args={
long
}
}
return r
end
-- jen funkcio por elvoko de la ŝablono mapligilo
local function mapligilo(komuneja_mapo, nomo, zomo, lat1, long1, lat2, long2, varianto, wd_id)
local frame = mw.getCurrentFrame()
local r
-- la unua litero fariĝu majuskla
local teksto = mw.ustring.upper(mw.ustring.sub(varianto, 1, 1)) .. mw.ustring.sub(varianto, 2)
local mapo_parametroj = mw.loadData('Modulo:Geografiaĵoj/mapligilo')
local mapo_listo = mapo_parametroj.mapligilo
if type(mapo_listo) == "table" then
for k, v in pairs(mapo_listo) do
local varianto2, streko, fono, markilo, markilo2, markilokoloro, grupo
if type(v) == 'table' then
varianto2=v["varianto"]
streko=v["streko"]
fono=v["fono"]
markilo=v["markilo"]
markilo2=v["markilo2"]
markilokoloro=v["markilokoloro"]
grupo=v["grupo"]
if varianto2 == varianto then
-- laŭgrupa traktado
if grupo == '3' then
local koord1=koordinatoj(lat1, long1)
local koord2=koordinatoj(lat2, long2)
r = frame:expandTemplate {
title='mapligilo',
args={
['frame']='yes',
plain='yes',
['type'] = 'line',
id=wd_id,
from=komuneja_mapo,
title='Linio',
description='Linio',
['frame-align']='center',
['frame-width']='250',
['stroke-width']='2',
['stroke-color']=streko,
fill=fono,
text=nomo,
zoom=zomo,
type2='point',
coord2=koord1,
title2='Fonto',
description2='Fonto',
marker2=markilo,
['marker-color2']=markilokoloro,
type3='point',
coord3=koord2,
title3='Enfluejo',
description3='Enfluejo',
marker3=markilo2,
['marker-color3']=markilokoloro
}
}
return r
elseif grupo == '2' or grupo == '1' then
local koord=koordinatoj(lat1, long1)
local lat=CoordinateLAT(lat1)
local long=CoordinateLONG(long1)
r = frame:expandTemplate {
title='mapligilo',
args={
['frame']='yes',
plain='yes',
['type'] = 'shape',
id=wd_id,
title=teksto,
description=teksto,
['frame-lat']=lat,
['frame-long']=long,
['frame-align']='center',
['frame-width']='250',
['stroke-width']='2',
['stroke-color']=streko,
fill=fono,
text=nomo,
zoom=zomo,
type2='point',
coord2=koord,
title2=teksto,
description2=teksto,
marker2=markilo,
['marker-color2']=markilokoloro
}
}
return r
end
end
end
end
end
end
-- anstataŭu ion
local function anstatau(teksto, serchu, metu)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate {
title='Ŝablono:Anstataŭu',
args={
teksto,
serchu,
metu
}
}
return r
end
-- alvoko de informkestera ŝablono
local function kestero(teksto, etikedo, fono, shtopado)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate {
title='Ŝablono:Informkesto/+/html',
args = {
linisalto='jes',
['titola koloro']='neniu',
['koloro alt']=fono,
fono=fono,
teksto=teksto,
etikedo=etikedo,
['ŝtopado']=shtopado
}
}
return r
end
-- traktu ligilon per {{URL}}
local function url(ligilo, teksto)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate {
title='Ŝablono:URL',
args = {
ligilo,
teksto
}
}
return r
end
local p = {}
-- spaco por la eksportataj funkcioj
function p._informkesto(tipoj,args)
-- klaso por la tuta tabelo, aldonata post "infobox"
local klaso = args['klaso'] or ""
local titolklaso = args['titolklaso'] or ""
local tipo = tipoj[1] or ""
local tipob = tipoj[2] or ""
if tipo ~= "" then
tipo = mw.ustring.lower(tipo)
end
if tipob ~= "" then
tipob = mw.ustring.lower(tipob)
end
-- formatoj
local fono = args['fono'] or ""
local fono2 = args['fono2'] or "#efefef"
if fono == "" then
if tipo ~= "" then
fono = koloroj.fonkoloro(tipo)
else
fono = "#FFFFFF"
end
end
local shablono
-- parametro kun nomo de la ŝablono
if args['ŝablono'] ~= "" and args['ŝablono'] ~= nil then
shablono = args['ŝablono']
else
shablono = "Informkesto geografiaĵo"
end
-- variablo por ligilo al Vikidatuma paĝo
local vikidatumoj=""
if shablono == "Informkesto geografiaĵo" or shablono == "Informkesto urbo" then
vikidatumoj="jes"
end
-- helpa parametro por testoj de valoroj el Vikidatumoj
local wdid
if wdidstirilo == true then
wdid = args['wd'] or args['wd-id']
end
-- tradukas la kutiman parametron al la propra
local wv = args['sen banderolo']
if wv == "jes" then
args["vikivojaĝa bildo"] = "neniu"
end
-- pliaj variabloj
local r = ""
-- enhavo de la informkesto
local dua_klaso = ""
if shablono == "Informkesto geografiaĵo" then
dua_klaso = ' geography '
end
if klaso ~= "" and klaso ~= nil then
klaso = "infobox " .. dua_klaso .. klaso
else
klaso = "infobox" .. dua_klaso
end
-- komenco de la tabelo
local titolo = args["titolo"] or args["nomo"] or "" -- pliaj variantoj aldoneblas
if titolo == "" then
titolo = paghenamebase ()
end
local largho = args["informkesta larĝo"] or "23em"
-- ekuzi submodulojn por la informkesta strukturo
local submodulo = args['submodulo'] or "geokesto"
if args['subŝablono'] ~= "jes" then
-- la variablo "tabelo" ne povas esti local, ĉar alie ĝia uzo en subŝablono ne funkcias
tabelo = mw.html.create("table")
:addClass(klaso)
:css('width',largho)
:css("font-size","89%")
:css('-moz-box-shadow', '4px 4px 4px #CCC')
:css('-webkit-box-shadow', '4px 4px 4px #CCC')
:css('box-shadow', '4px 4px 4px #CCC')
:newline()
--tabelkomenco(klaso)
-- wd poste estos aranĝata
titolklaso = fonbildo.fonobildo(tipo)
tabelkapo(titolo, fono, '', wd, titolklaso, montrilo)
else
-- la variablo "tabelo" ne povas esti local, ĉar alie ĝia uzo en subŝablono ne funkcias
tabelo = mw.html.create()
subshablono = true
end
-- posttitola parto de la informkesto
local variabloj = 'Modulo:Geografiaĵoj/' .. submodulo
local parametroj = mw.loadData(variabloj)
local listo = parametroj.linioj
local noto = parametroj.noto or ""
local referenco = parametroj.referenco or ""
local ktipo = parametroj.tipo or ""
local koordkasho = parametroj.koordkasho or ""
local kashvaloro = parametroj.kashvaloro or ""
local situo = parametroj.situo or ""
if type(listo) == "table" then
-- testo
local s
local par, t, pk, pk2, a1, a2, pri, pri2, iso, kon, defaulto
for k, v in pairs(listo) do
-- s = type(k)
-- if s == "string" then
-- return k
-- elseif s == "table" then
-- return k
-- elseif s == "number" then
if type(v) == "table" then
par = v["parametro"]
par_a = v['parametro_a']
par2 = v["parametro2"]
par2_a = v['parametro2_a']
t = v["tipo"]
pri = v["priskribo"]
pri2 = v["priskribo2"]
pri3 = v["priskribo3"]
pri4 = v["priskribo4"]
pk = v["pKodo"]
pk2 = v["pKodo2"]
pk3 = v["pKodo3"]
pk4 = v["pKodo4"]
a1 = v["aldono1"]
a1_a = v["aldono1_a"]
a2 = v["aldono2"]
a2_a = v["aldono2_a"]
a3 = v["aldono3"]
a3_a = v["aldono3_a"]
a4 = v["aldono4"]
a4_a = v["aldono4_a"]
p1 = v["prefikso1"]
p2 = v["prefikso2"]
p3 = v["prefikso3"]
p4 = v["prefikso4"]
grupanoj=v["grupanoj"]
listeroj=v["listeroj"]
montrilo=v["montrilo"]
defmontrilo=v["defmontrilo"]
iso=v["iso"]
kon = v["kondicho"]
globo =v["globe"]
defaulto = v["defaulto"]
-- voki la parametron el args
par = tostring(par)
-- local param = args[par] or ""
local param = argumentoj (args, par) or argumentoj(args, par_a)
local param2
if par2 ~= "" and par2 ~= nil then
param2 = argumentoj(args,par2) or argumentoj(args, par2_a)
end
-- "montrilo" de tabela linio (angle Tooltip; esperanta traduko de la tradukinto de {{Geokesto}})
local montrilo = argumentoj(args, montrilo)
if montrilo == "" or montrilo == nil then
montrilo = defmontrilo
end
-- por notoj
local noto2
if noto == "_noto" then
noto2 = par .. noto -- kunigas parametrajn nomojn, ne valorojn
elseif noto == "noto por " then
noto2 = noto .. par -- kunigas parametrajn nomojn, ne valorojn
end
local notovaloro = argumentoj(args,noto2) -- transprenas la valoron el la ŝablono
-- por referencoj
local referenco2, referenco2a, referenco2b
if referenco == "_referenco" then
referenco2 = par .. referenco -- kunigas parametrajn nomojn, ne valorojn
referenco2a = referenco2 .. "_nomo"
referenco2b = referenco2 .. "_nomo-dua"
elseif referenco == "referenco por " then
referenco2 = referenco .. par -- kunigas parametrajn nomojn, ne valorojn
referenco2a = "nomo por " .. referenco2
referenco2b = "nomo-dua por " .. referenco2
end
local referencovaloro = argumentoj(args,referenco2) -- transprenas la valoron el la ŝablono
local referenconomo = argumentoj(args,referenco2a) -- transprenas la valoron el la ŝablono
local referenconomodua = argumentoj(args,referenco2b) -- transprenas la valoron el la ŝablono
if t == "subtitolo" then
-------------------- SUBTITOLO -------------------------------------------------
local kondicho = argumentoj(args, kon)
if args['subŝablono'] ~= "jes" and kondicho ~= 'jes' then
if param ~= "" and param ~= nil then
tabelsubtitolo(param, fono, montrilo)
end
end
elseif t == 'subtitolo2' then
--------------------------------------------------------------------------------
local kondicho = argumentoj(args, kon)
if param ~= "" and param ~= nil and kondicho ~= 'jes' then
local r = param
if a1 ~= "" and a1 ~= nil then
local nombro = tonumber(a1)
if nombro ~= nil then
for i=1, nombro do
local titolo = par .. i
local st = argumentoj(args, titolo) or ""
if st ~= "" then
r = r .. ', ' .. '<span style="white-space: nowrap;">' .. st .. '</span>'
end
end
end
end
tabelsubtitolo(r,fono, montrilo)
end
elseif t == "subtitolo3" or t == '-' then
----------------- SUBTITOLO KUN TEKSTO -------------------------------------------------------------------------------------------
local c = '<hr style="display:none; " />'
-- la strio aperu nur, se unu el la grupaj parametroj estas uzata
-- bonvolu atenti, ke la defaŭlta teksto estas difinata en priskribo, ne en parametro
-- parametro nur povas anstataŭigi ĝin
if pri ~= "" and pri ~= nil then
if param ~= "" and param ~= nil then
pri = param
end
end
if grupanoj ~= "" and grupanoj ~= nil then
local nombro = #grupanoj
-- la disiga signaro estas ///
local string = mw.text.split(grupanoj, "///", true)
-- helpa parametro por eviti pli ol unu strion
local n = 1
if shablono == "Informkesto urbo" then
fono2 = args['fono']
elseif v["koloro"] == "cheftitolo" then
fono2 = fono
end
for k, v in pairs(string) do
local testo = argumentoj(args,v)
-- aldono por Informkesto urbo kaj similaj ŝablonoj
if v == "situo sur mapo" and (testo == "" or testo == nil) then
testo = argumentoj(args,"regiono-ISO")
elseif v == "koordinatoj" and (testo == "" or testo == nil) then
lat, lon = koordargumentoj(args,"situo")
if lat and lon then
testo = "jes"
else
lat = argumentoj(args,"latitudo")
lon = argumentoj(args,"longitudo")
if lat and lon then
testo = "jes"
end
end
elseif testo == "" or testo == nil then
local chupkodo = mw.ustring.match(v,"P[0-9]*([0-9])") --analizo, ĉu estas pkodo
if chupkodo ~= nil then
testo=wdparam(v,wdid)
end
end
if testo ~= "" and testo ~= nil and n == 1 then
if t == 'subtitolo3' then
local pri2 = argumentoj(args,a1)
if pri2 ~= "" and pri2 ~= nil then
pri = pri2
end
tabelsubtitolo(pri, fono2, montrilo)
elseif t == '-' then
aldonuchelon(c,"linio")
end
n = n +1
end
end
end
elseif t == "bildo" then
---------------- BILDO ------------------------------------------------------------------------------------------------------------
-- bilda parto -- bildo estas malaperigebla per certaj valoroj
-- komunaj variabloj
local priskribo = argumentoj(args, a1) or argumentoj(args, a1_a) or bildargumentoj(args, par, "priskribo") or bildargumentoj(args, par_a, "priskribo")
local grando = argumentoj(args, a2) or argumentoj(args, a2_a) or bildargumentoj(args, par, "grandeco") or bildargumentoj(args, par_a, "grandeco")
local grupo = argumentoj(args, a3) or argumentoj(args, a3_a)
if param ~= "" and param ~= nil then
if param ~= "ne" and param ~= "neniu" then
-- local bildo = bildoj.InfoboxImage({args={image=param,size=args[a2],sizedefault="frameless",center="yes", caption=args[a1]} })
local bildo = bildoj.InfoboxImage({args={image=param,size=grando,sizedefault="frameless",center="yes", caption=priskribo} })
unuopabildo(bildo)
end
else
if pK ~= "" and lucky_bildo then
-- {{#invoke:Wikidata/bildoj|bildoj|priskribo de bildoj={{{priskribo de bildoj|}}}|priskribo de bildo={{{priskribo de bildoj|{{{bildo-priskribo|}}}}}}}}
-- local bildo = wikidataBildo.bildoj({args={grandeco=args[a2],["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=args[a1]} })
local bildo
if wdid ~= "" and wdid ~= nil then
bildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2,id=wdid, tabelo=args, grupo=grupo} })
else
bildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2, tabelo=args, grupo=grupo} })
end
if bildo then
unuopabildo(bildo,"jes")
end
end
end
elseif t == "bildo2" then
---------------- BILDO2 -------------------------------------------------------------------------------------------------------------
-- unue transprenas la bildojn el parametroj aŭ Vikidatumaj eroj
local bildo
local bildo2
local priskriboB
local priskriboC
local kondicho = argumentoj(args, kon)
-- unua bildo
bildo, priskriboB, wd = bildaro (args, param, a1, a1_a, a2, a2_a, par, par_a, pri, pk, pk2, wdid)
-- dua bildo
bildo2, priskriboC, wd2 = bildaro (args, param2, a3, a3_a, a4, a4_a, par2, par2_a, pri2, pk3, pk4, wdid)
-- due la jam aranĝitaj bildoj estas metataj en tabelajn ĉelojn
if bildo ~= "" and bildo ~= nil and bildo2 ~= "" and bildo2 ~= nil and kondicho ~= 'jes' then
if priskriboB == "" or priskriboB == nil then
priskriboB = pri or ""
end
if priskriboC == "" or priskriboC == nil then
priskriboC = pri2 or ""
end
duopajbildoj(bildo,bildo2,priskriboB,priskriboC, wd, wd2)
elseif bildo ~= "" and bildo ~= nil and (bildo2 == "" or bildo2 == nil) and kondicho ~= 'jes' then
if priskriboB ~= "" and priskriboB ~= nil then
bildo = bildo .. "<div>" .. priskriboB .. "</div>"
elseif pri ~= "" and pri ~= nil then
-- defaŭlta priskribo
bildo = bildo .. "<div>" .. pri .. "</div>"
end
if wd == 1 or wd == 2 then
wd = "jes"
end
unuopabildo(bildo, wd)
elseif (bildo == "" or bildo == nil) and bildo2 ~= "" and bildo2 ~= nil and kondicho ~= 'jes' then
if priskriboC ~= "" and priskriboC ~= nil then
bildo2 = bildo2 .. "<div>" .. priskriboC .. "</div>"
elseif pri2 ~= "" and pri2 ~= nil then
-- defaŭlta priskribo
bildo2 = bildo2 .. "<div>" .. pri2 .. "</div>"
end
if wd2 == 1 or wd2 == 2 then
wd2 = "jes"
end
unuopabildo(bildo2,wd2)
end
elseif t == "teksto" or t == "numero" or t == "loĝantaro" or t == "kodo" or t == "ekde" or t == "situo" or t == "ligilo" then
---------------- TEKSTO - do duĉela teksto kun priskribo aŭ unuĉela sen priskribo --------------------------------------------------------------------------
-- komuna parto de la priskribo
local a2a
local prialt
local paramalt
if pri ~= "" then
prialt = pri
a1a = argumentoj(args,a1) or argumentoj(args,a1_a)
if a1a ~= "" and a1a ~= nil then
pri = a1a
end
if v['sub'] == 1 then
pri = " - " .. pri
end
a2a = argumentoj(args,a2) or argumentoj(args,a2_a)
if a2a ~= "" and a2a ~= nil then
if t == "kodo" then
pri = pri .. " laŭ " .. a2a
elseif t == "ekde" then
if a3 ~= "" and a3 ~= nil then
local a3a = argumentoj(args,a3) or argumentoj(args,a3_a)
if a3a ~= "" and a3a ~= nil then
a3a = " ĝis " .. a3a
pri = pri .. " (ekde " .. a2a .. a3a .. ")"
else
pri = pri .. " (ekde " .. a2a .. ")"
end
else
pri = pri .. " (ekde " .. a2a .. ")"
end
end
end
end
if v['kondicho'] ~= "" and v['kondicho'] ~= nil and (param == "" or param == nil) then
local kondicho = v['kondicho']
local strings = mw.text.split(kondicho, "///", plain)
for k, v in pairs(strings) do
local testo = argumentoj(args,v)
if testo ~= "" and testo ~= nil then
param = " "
break
end
end
end
-- pliaj informoj pri situo
local situo2 = ""
if situo ~= "" and situo ~= nil and t == "situo" then
local strings = mw.text.split(situo, "///", plain)
local n = 1 -- nombro de tiaj parametroj en artikolo
for k, v in pairs(strings) do
local situoinformo = argumentoj(args,a2 .. "_" .. v)
if situoinformo ~= "" and situoinformo ~= nil then
if n == 1 then
situo2 = situo2 .. situoinformo
else
situo2 = situo2 .. ", " .. situoinformo
end
n = n + 1
end
end
end
-- se parametro estas en la artikolo
if param ~= "" and param ~= nil then
paramalt = param
if t == "numero" or t == "loĝantaro" then -- se estas numero aŭ nombro de loĝantoj, laŭ la subŝablona tabelo, tiam formatigu tiel
local n = tonumber(param)
if n ~= nil then
param = formatnum(param)
else
nenumero = true -- aktivigas zorgigan kategorion
end
end
if t == "loĝantaro" and param == "0" then
-- aktivigu la stiran variablon por kategorio, se loĝantaro estas 0
if tipo == "insulo" or tipo =="insularo" then
nelogh = true
param = "(neloĝata)"
elseif tipo == "atolo" then
nelogh2 = true
param = "(neloĝata)"
elseif tipo == "ekoregiono" then
param = "(neloĝata)"
end
end
if a2a ~= "" and a2a ~= nil then
if t == "loĝantaro" then
param = param .. " <small>(" .. a2a .. ")</small>"
elseif t ~= "situo" then
if v["prefikso"] ~= "" and v["prefikso"] ~= nil then
a2a = v["prefikso"] .. a2a
end
param = param .. " (" .. a2a .. ")"
end
end
if situo2 ~= "" then
param = param .. ", " .. situo2
end
param = notaldono(notovaloro,param, a2)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
if pri ~= "" and pri ~= nil then
local trajto = argumentoj(args,a2)
local faldo = argumentoj(args,a2)
-- varianto kun la parametro "trajto por libera"
if prialt == "?" and t == "teksto" and trajto == "ĉelo" then
local k = v["aldono3"]
aldonulinion(pri,"","","", montrilo)
kesteroj(paramalt, trajto, k)
-- por faldado, se estas multe da informoj
elseif t == "teksto" and (faldo == "jes" or faldo == "1") then
local pri2 = v["priskribo2"]
local f = kestero(pri2,'+',fono,'0')
tabelo:wikitext(f)
-- aldonulinion(pri,param, "", "", montrilo)
tabelsubtitolo(param, fono, montrilo)
local f2 = kestero('','*')
tabelo:wikitext(f2)
else
aldonulinion(pri,param, "", "", montrilo)
end
else
aldonuchelon(param, "", "", montrilo)
end
else
-- ĉu vikidatuma ero ekzistas
local wd, referencovaloro
-- por plej alta kaj plej malalta. aldonoj eblas.
if pk == 'P610' or pk == 'P1589' then
wd, referencovaloro = wdparam2(pk,wdid,referencovaloro)
else
wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
end
if wd ~= "" and wd ~= nil then
local ligilo = wdlink (wdid, pk) or ""
if t == "numero" or t == "loĝantaro" then
wd = formatnum(wd) or wd
elseif t == "ligilo" then
pri = "En TTT" -- kiel en ekz. {{Informkesto urbo}}
wd = url(wd,"Oficiala retejo") -- voku la helpan ŝablonon
elseif t == "teksto" then
-- forĵeti strangaĵon el Vikidatumo
if wd == "nekonata valoro" then
wd = "?"
end
end
if t == "loĝantaro" and wd == "0" then
if tipo == "insulo" or tipo =="insularo" then
nelogh = true
wd = "(neloĝata)"
elseif tipo == "atolo" then
nelogh2 = true
wd = "(neloĝata)"
end
end
wd = notaldono(notovaloro,wd, a2)
wd = refaldono(referencovaloro,wd, referenconomo, referenconomodua)
wd = wd .. ligilo
if t == "loĝantaro" then
-- {{#invoke:Wikidata|claim|P1082|id=Q64|qualifier=P585}}
local wda2
-- Veruko por ne afisxi K.E.
if wdid ~= "" and wdid ~= nil then
wda2 = wikidata.claim({args={pk,qualifier=pk2,id=wdid} })
else
wda2 = wikidata.claim({args={pk,qualifier=pk2} })
end
if wda2 ~= "" and wda2 ~= nil then
-- forigi K.E. el la teksto, sed ankaŭ la antaŭa spaco estu forigita
wda2 = mw.ustring.gsub( wda2, " K%.E%.", "")
wd = wd .. " <small>(" .. wda2 .. ")</small>"
end
-- fino de la veruko
else
if a2a ~= "" and a2a ~= nil then
wd = wd .. " (" .. a2a .. ")"
end
end
-- wd = notaldono(noto,par, wd, args,a2,pk,wdid)
if pri ~= "" and pri ~= nil then
aldonulinion(pri,wd,"jes", "",montrilo)
else
aldonuchelon(wd,"", "jes", montrilo)
end
else
-- varianto kun "laŭ" ktp.
local lauc1, lauc2, pk = lauparam(args,a2,wdid) -- por kodo
if lauc1 ~= "" and lauc1 ~= nil and lauc2 ~= "" and lauc2 ~= nil then
local ligilo = wdlink(wdid,pk) or ""
lauc2 = lauc2 .. ligilo
aldonulinion(lauc1,lauc2,"jes", "", montrilo)
end
end
end
elseif t == "teksto1" or t == "ligilo1" then
---------------- TEKSTO1 - do unuĉela teksto kun priskribo -------------------------------------------------------------------------
-- komuna parto kun priskribo
local p = pri or ""
if p ~= "" then
p = "<b>" .. p .. "</b>: "
end
local p2 = ""
local ligilo = ""
local jes = ""
-- se parametro estas en artikolo
if param ~= "" and param ~= nil then
p2 = p .. param
else
-- ĉu estas vikidatuma ero
local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
if wd ~="" and wd ~= nil then
ligilo = wdlink (wdid, pk) or ""
if t == "ligilo1" then
p = "<b>En TTT</b>: " -- kiel en ekz. {{Informkesto urbo}}
wd = url(wd,"Oficiala retejo") -- voku la helpan ŝablonon
end
p2 = p .. wd
jes = "jes"
end
end
-- eldono
if p2 ~= "" then
p2 = notaldono(notovaloro,p2)
p2 = refaldono(referencovaloro,p2, referenconomo, referenconomodua)
p2 = p2 .. ligilo
-- tio ebligu malaperigon, se la rilata Vikidatuma ero subite enhavas malaktualan informon
if param ~= "neniu" and param ~= "ne" then
aldonuchelon(p2,"",jes, montrilo)
end
end
elseif t == "portalo" then
---------------- PORTALO - rilata portalo -------------------------------------------------------------------------
if param ~= "" and param ~= nil then
local bildo = "[[Dosiero:Portal.svg|15px]]"
param = " <b>[[Portalo:" .. param .. "|" .. param .. "]]</b>"
local p2 = bildo .. param
aldonuchelon(p2, "", "", montrilo)
end
elseif t == "komunejo" then
---------------- KOMUNEJO - rilata kategorio en la Komunejo -------------------------------------------------------------------------
-- komuna parto
local bildo = "[[Dosiero:Commons-logo.svg|15px]]"
local p = pri or ""
if p ~= "" then
p = "<b>" .. p .. "</b>: "
end
local p2 = ""
local ligilo = ""
local jes = ""
if param ~= "" and param ~= nil then
param = " <b>[[:commons:Category:" .. param .. "|" .. param .. "]]</b>"
p2 = bildo .. p .. param
else
-- ĉu vikidatuma ero estas
local wd = wdparam(pk,wdid)
if wd ~= "" and wd ~= nil then
wd = " <b>[[:commons:Category:" .. wd .. "|" .. wd .. "]]</b>"
p2 = bildo .. p .. wd
ligilo = wdlink (wdid, pk) or ""
jes = "jes"
end
end
-- eldono
if p2 ~= "" then
p2 = p2 .. ligilo
aldonuchelon(p2,"",jes, montrilo)
end
elseif t == "teksto2l" then
----------------- TEKSTO EN DU SINSEKVAJ LINIOJ -----------------------------------------------------------------------------------
local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
if (param ~= "" and param ~= nil) or (wd ~= "" and wd ~= nil) then
local paramA = param -- konservu "param" por pli posta analizo
param = param or wd
local a1a = argumentoj(args,a1) or argumentoj(args,a1_a)
if a1a ~= "" and a1a ~= nil then
pri = a1a
end
local a2a = argumentoj(args,a2) or argumentoj(args,a2_a)
if a2a ~= "" and a2a ~= nil then
if p2 ~= "" and p2 ~= nil then
a2a = p2 .. a2a
end
param = notaldono(notovaloro,param, a2)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
param = param .. " (" .. a2a .. ")"
end
if (paramA == "" or paramA == nil) and wd ~= "" and wd ~= nil then
wd = "jes"
local ligilo = wdlink (wdid, pk) or ""
param = param .. ligilo
end
aldonulinion(pri,param,wd, "", montrilo)
if param2 ~= "" and param2 ~= nil then
local a3a = argumentoj(args,a3) or argumentoj(args,a3_a)
if a3a ~= "" and a3a ~= nil then
pri2 = a3a
end
local a4a = argumentoj(args,a4) or argumentoj(args,a4_a)
if a4a ~= "" and a4a ~= nil then
if p4 ~= "" and p4 ~= nil then
a4a = p4 .. a4a
end
param2 = param2 .. " (" .. a4a .. ")"
end
-- wd estu poste aldonata
wd = nil
aldonulinion(pri2, param2,wd, "",montrilo)
end
end
elseif t == "-teksto" then
-----------------TEKSTO, KIU APERAS MALDEKSTRE SEN DEKSTRAJ DATOJ -----------------------------------------------------------------
-- la strio aperu nur, se unu el la grupaj parametroj estas uzata
if grupanoj ~= "" and grupanoj ~= nil then
local nombro = #grupanoj
-- la disiga signaro estas ///
local string = mw.text.split(grupanoj, "///", true)
-- helpa parametro por eviti pli ol unu strion
local n = 1
for k, v in pairs(string) do
local testo = argumentoj(args,v)
if testo ~= "" and testo ~= nil and n == 1 then
local c1 = pri
if a1 ~= "" and a1 ~= nil then
c1a = argumentoj(args,a1) or argumentoj(args,a1_a)
if c1a ~= "" and c1a ~= nil then
c1 = c1a
end
end
aldonulinion(c1,"","","", montrilo)
n = n +1
end
end
end
elseif t == "listo" then
---------------- LISTO --------------------------------------------------------------------------------------------------------------
-- Listecaj parametroj
if param ~= "" and param ~= nil then
local c1 = pri
local f = false -- ne pluralo
local div = false -- neniu faldado
local nombro = 15
if listeroj ~= "" and listeroj ~= nil then
local l = tonumber(listeroj)
if l ~= nil then
nombro = l
end
end
local n = 1
local chuflago
if a3 ~= "" and a3 ~= nil then
chuflago=argumentoj(args,a3)
end
if chuflago ~= "" and chuflago ~= nil then
param = flago(param)
end
-- analizo, ĉu jam estas ligilo en la listero. se ne, aldonu ĝin.
local testo = ligiloj._chuligilo2(param)
local chuligi = argumentoj(args,par.." ligado")
if testo == "ligu" and chuligi ~= "ne" then
param = "[[" .. param .. "]]"
end
if v["prefikso"] ~= "" and v["prefikso"] ~= nil and a2 ~= "" and a2 ~= nil then
local a2a = argumentoj(args,a2)
if a2a ~= "" and a2a ~= nil then
a2a = v["prefikso"] .. a2a
param = param .. " (" .. a2a .. ")"
end
end
param = notaldono(notovaloro,param)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
for i=1, nombro do
local c2 = argumentoj(args,"" .. v["parametro"] .. i) or ""
-- local c2 = args["" .. v["parametro"] .. i] or ""
if c2 ~= "" and c2 ~= nil then
if chuflago ~= "" and chuflago ~= nil then
c2 = flago(c2)
else
-- analizo, ĉu jam estas ligilo en la listero. se ne, aldonu ĝin.
local testo = ligiloj._chuligilo2(c2)
local chuligi = argumentoj(args,"" .. v["parametro"] .. i .." ligado") or ""
if testo == "ligu" and chuligi ~= "ne" then
c2 = "[[" .. c2 .. "]]"
end
end
local noto2
if noto == "_noto" then
noto2 = par .. i .. noto
elseif noto == "noto por " then
noto2 = noto .. par .. i
end
local notovaloro = argumentoj(args,noto2)
local referenco2, referenco2a, referenco2b
if referenco == "_referenco" then
referenco2 = par .. i .. referenco
referenco2a = referenco2 .. "_nomo"
referenco2b = referenco2 .. "_nomo-dua"
elseif referenco == "referenco por " then
referenco2 = referenco .. par .. i
referenco2a = referenco2 .. "-nomo"
referenco2b = referenco2 .. "-nomo-dua"
end
local referencovaloro = argumentoj(args,referenco2)
local referenconomo = argumentoj(args,referenco2a)
local referenconomodua = argumentoj(args,referenco2b)
c2 = notaldono(notovaloro,c2)
c2 = refaldono(referencovaloro,c2,referenconomo,referenconomodua)
param = param .. ";;;" .. c2
f = true
n = n + 1
end
end
if n > 1 then
local chufaldi = argumentoj(args,a2)
local chufaldiN = tonumber(chufaldi)
if chufaldiN == 1 or chufaldi == "faldo" then
param = n .. ";;;" .. param
div = true
end
end
if f == true and pri2 ~= "" and pri2 ~= nil then
c1 = pri2
end
if a1 ~= "" and a1 ~= nil then
-- c1 = argumentoj(args, a1)
local c1a = argumentoj(args, "" .. a1)
-- local c1a = args["" .. a1]
if c1a ~= "" and c1a ~= nil then
c1 = c1a
end
end
local c2
if div == true then
c2 = listoj._list(";;;",param,"ne","faldebla","","jes")
else
-- (delimiter, text, x, mode, sep, w, kind, spaces, spaces1, spaces2)
c2 = listoj._list(";;;",param,"ne","span",",","jes","","",0)
end
aldonulinion(c1,c2,"", "",montrilo)
else
local wd
if wdid ~= "" and wdid ~= nil then
wd = wikidata.claim({args={pk,list=";;;",id=wdid} })
else
wd = wikidata.claim({args={pk,list=";;;"} })
end
if wd ~= "" and wd ~= nil then
local nombro = listoj._count(";;;",wd)
local chufaldi = argumentoj(args,a2)
local chufaldiN = tonumber(chufaldi)
local ligilo = wdlink (wdid,pk) or ""
local c2
if chufaldiN == 1 or chufaldi == "faldo" then
wd = nombro .. ligilo .. ";;;" .. wd
c2 = listoj._list(";;;",wd,"jes","faldebla","","jes")
else
wd = wd .. ligilo
-- (delimiter, text, x, mode, sep, w, kind, spaces, spaces1, spaces2)
c2 = listoj._list(";;;",wd,"jes","span",",","jes","","",0)
end
aldonulinion(pri,c2,"jes", "",montrilo)
end
end
----------- listo2 --------
elseif t == "listo2" then
local kondicho = argumentoj(args, kon)
local def = defaulto -- ĉikaze por la faldado
local faldo = argumentoj(args,a2)
if args['subŝablono'] ~= "jes" and kondicho ~= 'jes' then
if param ~= "" and param ~= nil then
-- poste aldonota
else
local wd
if wdid ~= "" and wdid ~= nil then
wd = wikidata.claim({args={pk,parameter="link",list=";;;",id=wdid} })
else
wd = wikidata.claim({args={pk,parameter="link",list=";;;"} })
end
local ligilo = wdlink (wdid,pk) or ""
if wd ~= nil then
local nombro = listoj._count(";;;",wd)
nombro = tonumber(nombro)
local listeroj = v['listeroj'] or 1000
if nombro >= listeroj then
faldo = "jes"
end
wd = listoj._list(";;;",wd,"","span",",","jes","","",0)
wd = wd .. ligilo
-- aldonuchelon(wd,"",jes, montrilo)
if faldo == "jes" or faldo == "1" or (def == "1" and faldo ~= "ne") then
local f = kestero(pri,'+',fono,'0')
tabelo:wikitext(f)
tabelsubtitolo(wd, fono, montrilo)
local f2 = kestero('','*')
tabelo:wikitext(f2)
else
tabelsubtitolo(wd, fono, montrilo)
end
end
end
end
elseif t == "datoj" then
---------------- DATOJ KUN DIVERSAJ TRAJTOJ --------------------------------------------------------------------
if param ~= "" and param ~= nil then
local r
if v["dato"] ~= "" and v["dato"] ~= nil then
local param = tonumber(param)
local dato = tonumber(v["dato"])
local dato2 = tonumber(v["dato2"])
if param ~= nil and dato ~= nil then
local diferenco = param - dato
if param >= dato2 then
diferenco = diferenco - 1
end
r = param .. " (" .. diferenco .. ")"
end
end
if v["ligilo"] ~= "" and v["ligilo"] ~= nil then
r = "[" .. v["ligilo"] .. param .. " " .. param .. "]"
end
if v["kondicho"] ~= "" and v["kondicho"] ~= nil and v["rezulto"] ~= "" and v["rezulto"] ~= nil then
local strings1 = mw.text.split(v["kondicho"], "///", plain)
local strings2 = mw.text.split(v["rezulto"], "///", plain)
local numero1 = #strings1
local numero2 = #strings2
if numero1 == numero2 then
for k, v in pairs(strings1) do
if v == param then
r = strings2[k]
break
end
end
if r == "" or r == nil then
r = param
end
end
end
if r ~= "" and r ~= nil then
aldonulinion(pri,r,"", "",montrilo)
end
end
elseif t == "koordinatoj" then
---------------- KOORDINATOJ ------------------------------------------------------------------------------------
if a1 ~= "" and a1 ~= nil then
local latitudo, longitudo = koordargumentoj(args, a1)
local latitudo2, longitudo2
local gl = argumentoj(args,globo) -- por malofte uzata parametro "globe"
if a1 == "situo" then
latitudo2 = argumentoj(args,"latitudo")
longitudo2 = argumentoj(args,"longitudo")
else
latitudo2 = argumentoj(args, a1 .. "_latitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
longitudo2 = argumentoj(args,a1 .. "_longitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
end
local regiono1, tipo1 = koordtipo(argumentoj(args, a2)) -- kodo por {{Geokesto}} aŭ simila ŝablono
local regiono = argumentoj(args, iso) or argumentoj(args,"regiono-ISO") or regiono1
local ligiltipo = argumentoj(args,"type") or tipo1
if ktipo ~= "" and ktipo ~= nil and (ligiltipo == "" or ligiltipo == nil) then
ligiltipo = ktipo
elseif ligiltipo == "" or ligiltipo == nil then
if tipo ~= "" and tipo ~= nil then
ligiltipo = type_atributo.type_atributo(tipo)
else
ligiltipo = "landmark"
end
end
local nomo = argumentoj(args,"nomo") or argumentoj(args,"titolo") or paghenamebase ()
local c1
local kond = argumentoj(args,kon) -- ĉu kondiĉo?
if pri ~= "" and pri ~= nil and (kond == "" or kond == nil) then
c1 = pri
elseif kond ~= "" and kond ~= nil then
c1 = " - koordinatoj"
else
c1 = "Koordinatoj"
end
-- ĉu la koordinatoj aperu supre dekstre apud la titola linio aŭ ne? se jes, estu /. se ne, estu io alia.
local supre
if shablono ~= 'Informkesto urbo' then
supre = "/"
end
local koordkasho = argumentoj(args,koordkasho) or ""
if v["supre"] == "ne" or (koordkasho ~= "" and kashvaloro ~= "" and koordkasho == kashvaloro) or args['subŝablono'] == "jes" then
supre = ""
end
-- formatoj
local teksto
if v["formato"] ~= "" and v["formato"] ~= nil then
teksto = argumentoj(args,v["formato"])
if teksto ~= "" and teksto ~= nil then
teksto = mw.ustring.lower(teksto)
if teksto == "dms" or teksto == "gms" then
teksto = "dms"
elseif teksto == "dec" or teksto == "dek" then
teksto = "dec"
else
-- defaŭlta valoro, se uzanto provas difini sensencan valoron
teksto = "dms"
end
end
end
if (latitudo ~= "" and latitudo ~= nil and longitudo ~= "" and longitudo ~= nil) or (latitudo2 ~= "" and latitudo2 ~= nil and longitudo2 ~= "" and longitudo2 ~= nil) then
latitudo = latitudo or latitudo2
longitudo = longitudo or longitudo2
local k = koordinatoj(latitudo, longitudo, regiono, ligiltipo, nomo, supre, teksto, gl)
if k ~= "" and k ~= nil then
if a3 ~= "" and a3 ~= nil then
local n = argumentoj(args,a3) -- transprenas la valoron el la ŝablono
if n ~= nil then
k = k .. n -- aldonas noton
end
end
aldonulinion(c1,k,"","",montrilo)
end
else
local wdlatitudo, wdlongitudo
-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625
local metukoordinatojn = false
-- rigardas, ĉu la difinita valoro de tipo estas en la kondiĉa listo aŭ ne
if v['pkondicho'] ~= "" and v['pkondicho'] ~= nil then
local kondicho = v['pkondicho']
local strings = mw.text.split(kondicho, "///", plain)
for k, v in pairs(strings) do
if v == tipo then
metukoordinatojn = true
break
end
end
end
if shablono == "Informkesto urbo" or metukoordinatojn then
-- local wdid = argumentoj(args, 'wd-id')
local altkoord = argumentoj(args,'alto-koord') or argumentoj(args,'alto-koordinatoj')
if wdid ~= "" and wdid ~= nil then
-- aldono por kombino el numera identigilo kaj rilataj koordinatoj
if pk == "P610" then
if altkoord == "jes" then
wdlatitudo = wikidataGeo._plejaltalat(wdid)
wdlongitudo = wikidataGeo._plejaltalong(wdid)
end
elseif pk == "P1589" then
if altkoord == "jes" then
wdlatitudo = wikidataGeo._plejmalaltalat(wdid)
wdlongitudo = wikidataGeo._plejmalaltalong(wdid)
end
else
wdlatitudo = wikidataGeo._latitudo(wdid)
wdlongitudo = wikidataGeo._longitudo(wdid)
end
else
-- aldono por kombino el numera identigilo kaj rilataj koordinatoj
if pk == "P610" then
if altkoord == "jes" then
wdlatitudo = wikidataGeo._plejaltalat()
wdlongitudo = wikidataGeo._plejaltalong()
end
elseif pk == "P1589" then
if altkoord == "jes" then
wdlatitudo = wikidataGeo._plejmalaltalat()
wdlongitudo = wikidataGeo._plejmalaltalong()
end
else
wdlatitudo = wikidataGeo._latitudo()
wdlongitudo = wikidataGeo._longitudo()
end
end
end
if wdlatitudo ~="" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil then
local k = koordinatoj(wdlatitudo, wdlongitudo, regiono, ligiltipo, nomo, supre, teksto, gl)
local neniukoordinato = argumentoj(args,"neniukoordinato")
if k ~= "" and k ~= nil and neniukoordinato ~= "jes" then
if a3 ~= "" and a3 ~= nil then
local n = argumentoj(args,a3) -- transprenas la valoron el la ŝablono
if n ~= nil then
k = k .. n -- aldonas noton
end
end
local ligilo = wdlink (wdid, "P625") or ""
k = k .. ligilo
aldonulinion(c1,k,"jes", "",montrilo)
end
end
end
end -- a1
elseif t == "mapo" then
---------------- MAPO KUN MARKILO -------------------------------------------------------------------------------------------------------------------------------
-- mapo(mapo,aliamapo,mapofono,lat,lon,markocelo,tipo,priskribo,neniukoordinato)
local isomapo
local mapnumero = v["mapnumero"]
if args['uzuiso'] == "jes" and mapnumero ~= "dua" then
isomapo = isomapilo(args['regiono-ISO'])
end
if v['shanghebla'] ~= "" and v['shanghebla'] ~= nil then
-- testo, ĉu ŝanĝebla mapo estas difinita
local sh = v['shanghebla']
local testo = argumentoj(args,sh)
if testo ~= "" and testo ~= nil then
-- se jes, malebligu la neŝanĝeblan unuan mapon, kiel nun ja estas trajto de {{informkesto urbo}}
param = nil
isomapo = nil
end
end
if v['kashu'] ~="" and v['kashu'] ~= nil then
-- testo, ĉu ŝanĝebla mapo estas difinita
local sh = v['kashu']
local testo = argumentoj(args,sh)
if testo ~= "" and testo ~= nil then
-- se jes, malebligu la neŝanĝeblan unuan mapon, kiel nun ja estas trajto de {{informkesto urbo}}
param = nil
isomapo = nil
end
end
if (param ~= "" and param ~= nil) or isomapo then
local param_old = param -- por pli posta testo
if shablono ~= 'Informkesto urbo' then
param_old = ''
end
param = param or isomapo
if param == "iso" then
param = isomapilo(args['regiono-ISO'])
end
local latitudo = argumentoj(args,"latitudo")
local longitudo = argumentoj(args,"longitudo")
local latitudo2, longitudo2 = koordargumentoj(args, "situo")
local latitudo3, longitudo3
local latitudo4, longitudo4
local koord1 = v['koord1']
local koord2 = v['koord2']
if koord1 ~= "" and koord1 ~= nil then
latitudo3, longitudo3 = koordargumentoj(args, koord1)
end
if koord2 ~= "" and koord2 ~= nil then
latitudo4, longitudo4 = koordargumentoj(args, koord2)
end
local neniukoordinato = argumentoj(args,"neniukoordinato")
if pri ~= "" and pri ~= nil then
pri = argumentoj(args,pri)
end
if (shablono=="Informkesto urbo" or submodulo == "urbo") and (pri == "" or pri == nil) then
pri = "Situo de " .. titolo
end
if a1 ~= "" and a1 ~= nil then
a1 = argumentoj(args,a1)
end
if a2 ~= "" and a2 ~= nil then
a2 = argumentoj(args,a2)
end
if a3 ~= "" and a3 ~= nil then
a3 = argumentoj(args,a3) or "reliefo"
end
if a4 ~= "" and a4 ~= nil then
a4 = argumentoj(args,a4)
end
local t = v['koordtipo']
local regiono1, tipo1, regiono, tipo2
if t ~= "" and t ~= nil then
regiono1, tipo1 = koordtipo(argumentoj(args, t)) -- kodo por {{Geokesto}} aŭ simila ŝablono
regiono = argumentoj(args,"regiono-ISO") or regiono1
tipo2 = argumentoj(args,"type") or tipo1
else
regiono = argumentoj(args,"regiono-ISO")
tipo2 = argumentoj(args,"type")
end
if ktipo ~= "" and ktipo ~= nil and (tipo2 == "" or tipo2 == nil) then
tipo2 = ktipo
elseif tipo2 == "" or tipo2 == nil then
if tipo ~= "" and tipo ~= nil then
tipo2 = type_atributo.type_atributo(tipo)
else
tipo2 = "landmark"
end
end
-- aktivigo de kelkaj pliaj parametroj por la unua mapo kun markilo
local angulo = ""
if mapnumero ~= "dua" then
angulo ="jes"
end
local chumontaro = argumentoj(args,'montar-markilo')
if tipo == "montaro" and chumontaro ~= "jes" then
neniukoordinato = "jes"
montru="ne"
end
local marko=argumentoj(args,'marko')
local markospeco=argumentoj(args,'markospeco')
local markogrando = 8
local mg = argumentoj(args,'marko-ampl')
if mg ~= nil and mg ~= "" then
local test = tonumber(mg)
if test ~= nil then
markogrando = mg
else
mg = ""
end
end
-- ne estas kombinebla kun la antaŭa if-bloko
if mg == "" or mg == nil then
if tipo == "tertremo" or tipo == "lumturo" then
markogrando = 25
-- laŭ la specifa ŝablono "Informkesto arkeologia situo"
elseif tipo == "arkeologia situo" then
markogrando = 12
end
end
if (latitudo ~= "" and latitudo ~= nil and longitudo ~= "" and longitudo ~= nil) or (latitudo2 ~= "" and latitudo2 ~= nil and longitudo2 ~= "" and longitudo2 ~= nil)
or (latitudo3 ~= "" and latitudo3 ~= nil and longitudo3 ~= "" and longitudo3 ~= nil) or (latitudo4 ~= "" and latitudo4 ~= nil and longitudo4 ~= "" and longitudo4 ~= nil)
or (neniukoordinato ~= "" and neniukoordinato ~= nil) or (tipo == "montaro" and chumontaro ~= "jes") then
latitudo = latitudo or latitudo2 or latitudo3 or latitudo4
longitudo = longitudo or longitudo2 or longitudo3 or longitudo4
if param_old ~= 'neniu' then
local m = situomapo(param,a1,a2,latitudo,longitudo,a4,tipo,pri,neniukoordinato,a3,regiono,tipo2,"ne",angulo,args,marko,markospeco,markogrando,titolo)
aldonuchelon(m)
end
else
local wdlatitudo, wdlongitudo
-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625
if shablono == "Informkesto urbo" or submodulo == "urbo" or shablono == "Informkesto geografiaĵo" then
-- local wdid = argumentoj(args, 'wd-id')
if wdid ~= "" and wdid ~= nil then
wdlatitudo = wikidataGeo._latitudo(wdid)
wdlongitudo = wikidataGeo._longitudo(wdid)
else
wdlatitudo = wikidataGeo._latitudo()
wdlongitudo = wikidataGeo._longitudo()
end
end
if wdlatitudo ~= "" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil then
if param_old ~= 'neniu' then
local m = situomapo(param,a1,a2,wdlatitudo,wdlongitudo,a4,tipo,pri,neniukoordinato,a3,regiono,tipo2,"ne", angulo,args,marko,markospeco,markogrando,titolo)
aldonuchelon(m,x,"jes")
end
end
end
else -- lokumilo forestas
if a1 ~= "" and a1 ~= nil then -- ĉu en la difina tabelo enestas io uzebla?
a1a = argumentoj(args,a1) -- transpreno el la ŝablono
if a1a ~= "" and a1a ~= nil then -- ĉu parametro estas en la ŝablona uzado?
if a2 ~= "" and a2 ~= nil then
a2 = argumentoj(args,a2)
end
local pri2
if pri ~= "" and pri ~= nil then
pri2 = argumentoj(args,pri)
end
if a3 ~= "" and a3 ~= nil then
a3 = argumentoj(args, a3)
end
local m
if a3 == "ŝablono" then
m = bildoj.InfoboxImage({args={image=a1a,size=grando,sizedefault="120px",center="yes", alt=pri2} })
if pri2 ~= "" and pri2 ~= nil then
m = m .. '<div>' .. pri2 .. '</div>'
end
else
local gl = argumentoj(args,"globe")
m = situomaposenmarko(a1a,pri2,a2,tipoj[1],gl)
end
aldonuchelon(m)
end
end
end
elseif t == "mapo2" then
---------------- KOMUTEBLAJ MAPOJ -----------------------------------------------------------------------------------------------------------------
if param ~= "" and param ~= nil then
local latitudo = argumentoj(args,"latitudo")
local longitudo = argumentoj(args,"longitudo")
local latitudo2, longitudo2 = koordargumentoj(args, "situo")
local latitudo3, longitudo3
local latitudo4, longitudo4
local koord1 = v['koord1']
local koord2 = v['koord2']
if koord1 ~= "" and koord1 ~= nil then
latitudo3, longitudo3 = koordargumentoj(args, koord1)
end
if koord2 ~= "" and koord2 ~= nil then
latitudo4, longitudo4 = koordargumentoj(args, koord2)
end
local t = v['koordtipo']
local regiono1, tipo1, regiono, ligiltipo
if t ~= "" and t ~= nil then
regiono1, tipo1 = koordtipo(argumentoj(args, t)) -- kodo por {{Geokesto}} aŭ simila ŝablono
regiono = argumentoj(args,"regiono-ISO") or regiono1
ligiltipo = argumentoj(args,"type") or tipo1
else
regiono = argumentoj(args,"regiono-ISO")
ligiltipo = argumentoj(args,"type")
end
if ktipo ~= "" and ktipo ~= nil and (ligiltipo == "" or ligiltipo == nil) then
ligiltipo = ktipo
elseif ligiltipo == "" or ligiltipo == nil then
if tipo ~="" and tipo ~= nil then
ligiltipo = type_atributo.type_atributo(tipo)
else
ligiltipo = "landmark"
end
end
-- local nomo =
local marko=argumentoj(args,'marko')
local markospeco=argumentoj(args,'markospeco')
local mapotipo=argumentoj(args,'tipo')
-- unua mapo
local tipo1=argumentoj(args,a1)
local alt1=argumentoj(args,pri)
local mapo1=v['mapo1']
local mapo1=argumentoj(args,mapo1)
local fonamapo1=v['fonmapo1']
local fonamapo1=argumentoj(args,fonamapo1)
-- dua mapo
local tipo2=argumentoj(args,a2)
local alt2=argumentoj(args,pri2)
local mapo2=v['mapo2']
local mapo2=argumentoj(args,mapo2)
local fonamapo2=v['fonmapo2']
local fonamapo2=argumentoj(args,fonamapo2)
-- tria mapo
local tipo3=argumentoj(args,a3)
local alt3=argumentoj(args,pri3)
local mapo3=v['mapo3']
local mapo3=argumentoj(args,mapo3)
local fonamapo3=v['fonmapo3']
local fonamapo3=argumentoj(args,fonamapo3)
-- kvara mapo
local tipo4=argumentoj(args,a4)
local alt4=argumentoj(args,pri4)
local mapo4=v['mapo4']
local mapo4=argumentoj(args,mapo4)
local fonamapo4=v['fonmapo4']
local fonamapo4=argumentoj(args,fonamapo4)
if (latitudo ~= "" and latitudo ~= nil and longitudo ~= "" and longitudo ~= nil) or (latitudo2 ~= "" and latitudo2 ~= nil and longitudo2 ~= "" and longitudo2 ~= nil)
or (latitudo3 ~= "" and latitudo3 ~= nil and longitudo3 ~= "" and longitudo3 ~= nil) or (latitudo4 ~= "" and latitudo4 ~= nil and longitudo4 ~= "" and longitudo4 ~= nil) then
latitudo = latitudo or latitudo2 or latitudo3 or latitudo4
longitudo = longitudo or longitudo2 or longitudo3 or longitudo4
local m = situomapo2(param,latitudo,longitudo,titolo,punkto,tipo,marko,mapotipo, tipo1,alt1,mapo1,fonamapo1, tipo2,alt2,mapo2,fonamapo2, tipo3,alt3,mapo3,fonamapo3, tipo4,alt4,mapo4,fonamapo4,ligiltipo,regiono,markospeco)
aldonuchelon(m)
else
local wdlatitudo, wdlongitudo
-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625
if shablono == "Informkesto urbo" or submodulo == "urbo" or shablono == "Informkesto geografiaĵo" then
-- local wdid = argumentoj(args, 'wd-id')
if wdid ~= "" and wdid ~= nil then
wdlatitudo = wikidataGeo._latitudo(wdid)
wdlongitudo = wikidataGeo._longitudo(wdid)
else
wdlatitudo = wikidataGeo._latitudo()
wdlongitudo = wikidataGeo._longitudo()
end
end
if wdlatitudo ~= "" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil then
local m = situomapo2(param,wdlatitudo,wdlongitudo,titolo,punkto,tipo,marko,mapotipo, tipo1,alt1,mapo1,fonamapo1, tipo2,alt2,mapo2,fonamapo2, tipo3,alt3,mapo3,fonamapo3, tipo4,alt4,mapo4,fonamapo4,ligiltipo,regiono,markospeco)
aldonuchelon(m,x,"jes")
end
end
end
elseif t == "mapligilo" then
---------------- MAPLIGILO ----------------------------------------
if param ~= 'ne' then
-- provizore nur kelkaj tipoj laŭ unua nenomita parametro estu subtenataj. sed eble poste pliaj sekvos.
local mapo_parametroj = mw.loadData('Modulo:Geografiaĵoj/mapligilo')
local mapo_listo = mapo_parametroj.mapligilo
if type(mapo_listo) == "table" then
for k, v2 in pairs(mapo_listo) do
local temo2, grupo, kondicho, defzomo
if type(v2) == 'table' then
temo2 = v2["varianto"]
grupo = v2["grupo"]
defzomo = v2["zomo"]
kondicho = v2["kondicho"]
-- iom truka, ĉar ĉe difinita variablo en "Geografiaĵoj/mapligilo" la parametro "mapligilo=jes" fariĝu deviga
if kondicho == 'jes' and param ~= kondicho then
temo2 = ""
end
if temo2 == tipo then
local id, nomo, m, zomo, komuneja_mapo
local z = v['aldono1']
local kom = v['aldono2']
-- kodo por la rilata Vikidatuma paĝo
-- wdid = argumentoj(args, 'wd-id')
-- jen la titolo de la paĝo resp. artikolo
nomo = titolo
zomo = argumentoj(args, z) or defzomo
komuneja_mapo = argumentoj(args,kom)
if grupo == '3' then
local koord1 = v['koord2']
local koord2 = v['koord3']
local lat1, long1, lat2, long2
local latitudo1 = argumentoj(args, koord1 .. "_latitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
local longitudo1 = argumentoj(args, koord1 .. "_longitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
local latitudo2 = argumentoj(args, koord2 .. "_latitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
local longitudo2 = argumentoj(args, koord2 .. "_longitudo") -- la parametra varianto kun spaco estas ebligata de la vokata funkcio
if koord1 ~= "" and koord1 ~= nil then
-- prenu la koordinatojn por la fonto
lat1, long1 = koordargumentoj(args, koord1)
end
if koord2 ~= "" and koord2 ~= nil then
-- prenu la koordinatojn por la enfluejo
lat2, long2 = koordargumentoj(args, koord2)
end
if (lat1 ~= nil and long1 ~= nil and lat2 ~= nil and long2 ~= nil) or (latitudo1 ~= nil and longitudo1 ~= nil and latitudo2 ~= nil and longitudo2 ~= nil) then
lat1 = lat1 or latitudo1
long1 = long1 or longitudo1
lat2 = lat2 or latitudo2
long2 = long2 or longitudo2
m = mapligilo(komuneja_mapo, nomo, zomo, lat1, long1, lat2, long2, tipo, wdid)
end
elseif grupo == '2' or grupo == '1' then
local latitudo = argumentoj(args,"latitudo")
local longitudo = argumentoj(args,"longitudo")
local latitudo2, longitudo2, koord
if grupo == '2' then
latitudo2, longitudo2 = koordargumentoj(args, "situo")
koord = v['koord1']
elseif grupo == '1' then
latitudo2, longitudo2 = koordargumentoj(args, "ĉefurbo")
koord = v['koord4']
end
local lat, long
if koord ~= "" and koord ~= nil then
-- prenu la koordinatojn por la situo de la lago
lat, long = koordargumentoj(args, koord)
end
if (lat ~= nil and long ~= nil) or (latitudo ~= nil and longitudo ~= nil) or (latitudo2 ~= nil and longitudo2 ~= nil) then
lat = lat or latitudo or latitudo2
long = long or longitudo or longitudo2
m = mapligilo(komuneja_mapo, nomo, zomo, lat, long, '', '', tipo, wdid)
else
-- aŭ el la Vikidatuma ero
if wdid ~= "" and wdid ~= nil then
lat = wikidataGeo._latitudo(wdid)
long = wikidataGeo._longitudo(wdid)
else
lat = wikidataGeo._latitudo()
long = wikidataGeo._longitudo()
end
if lat ~= nil and long ~= nil then
m = mapligilo(komuneja_mapo, nomo, zomo, lat, long, '', '', tipo, wdid)
end
end
end
if m ~= nil then
aldonuchelon(m)
aldonuchelon(nomo)
end
end
end
end
end
end
elseif t == "alto" or t == "altitudo" or t == "longo" or t == "profundo" or t == "promilo" then
---------------- ALTO ---------------------------------------------------------------------------------------------
-- komuna parto kun priskribo
local c1 = pri or " - alteco"
local c2 = ""
local ligilo = ""
local jes = ""
local u = ""
-- varianto de priskriba teksto
a1a = argumentoj(args,a1)
if a1a ~= "" and a1a ~= nil then
c1 = a1a
end
-- unuo
a2a = argumentoj(args,a2)
-- minuskligi ĉion
if a2a ~= "" and a2a ~= nil then
a2a = mw.ustring.lower(a2a)
end
-- rondumo
a3a = argumentoj(args,a3)
local rondumo = 0
local testo = tonumber(a3a)
if type(testo) == "number" then
rondumo = testo
elseif t == "longo" and tipo == "lago" then
rondumo = 2
end
local kond = argumentoj(args,kon)
if kond ~= "" and kond ~= nil then
c1 = " - alteco"
end
local unuo = "[[Metro|m]]"
if t == "longo" then
unuo = "[[Kilometro|km]]"
u = "km"
if tipo == "konstruaĵo" or tipo == "alta konstruaĵo" or tipo == "monumento" or tipo == "ponto" or tipo == "placo"
or tipo =="strato" or tipo == "preĝejo" or tipo == "katedralo" or tipo == "monaĥejo" or tipo =="sinagogo" then
unuo = "[[Metro|m]]"
u = "m"
end
elseif t == "promilo" then
unuo = "[[Promilo|‰]]"
u = "‰"
elseif t == "profundo" and tipo == "tertremo" then
unuo = "[[Kilometro|km]]"
u = "km"
end
-- kontrolo, pri kiu unuo temas en transdonita parametro
if a2a == "m" or a2a == "km" then
unuo = a2a
u = a2a
end
local direkto = argumentoj(args,a4) or ""
if direkto ~= "" then
direkto = ', ' .. direkto
end
local regiono = argumentoj(args,"regiono-ISO")
-- se parametro estas en la artikolo
if param ~= "" and param ~= nil then
local n = tonumber (param)
if n ~= nil then
c2 = n
--if regiono ~= "" and regiono ~= nil and unuo == "[[Metro|m]]" then
if regiono ~= "" and regiono ~= nil and t == "altitudo" then
-- nur la du unuaj literoj estu uzataj
local kodo = mw.ustring.sub(regiono,1,2)
c2 = alteco(c2,kodo)
else
c2 = kalkuli._round(c2,rondumo)
c2 = formatnum(n)
c2 = c2 .. " " .. unuo
if u == "km" then
local mi = kalkuli._round(n/1.609344,rondumo)
c2 = c2 .. ' (' .. mi .. ' [[mejlo|mi]])'
end
end
else
c2 = param
c2 = mw.ustring.gsub(c2,"%.",",")
c2 = c2 .. " " .. unuo
nenumero=true -- aktivigas zorgigan kategorion
end
else
--ĉu vikidatuma ero ekzistas
--local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
local wd, referencovaloro, wdunuo
if wdid ~= "" and wdid ~= nil then
wd, referencovaloro = wikidata.claim({args={pk,qualifier=pk2, id=wdid, references = "raw"} })
if t == "altitudo" then
wdunuo = wikidataGeo._altecoUnuo(wdid, "", "")
end
else
wd, referencovaloro = wikidata.claim({args={pk,qualifier=pk2, references = "raw"} })
if t == "altitudo" then
wdunuo = wikidataGeo._altecoUnuo(nil, "", "")
end
end
if wd ~= "" and wd ~= nil then
ligilo = wdlink (wdid, pk)
c2 = wd
if regiono ~= "" and regiono ~= nil and t == "altitudo" then
-- nur la du unuaj literoj estu uzataj
local kodo = mw.ustring.sub(regiono,1,2)
if wdunuo ~= nil and wdunuo ~= "" and wdunuo ~= unuo then
c2 = wikidataGeo._altecoM(c2, wdunuo)
end
c2 = alteco(c2,kodo)
else
if wdunuo ~= nil and wdunuo ~= "" and wdunuo ~= unuo then
c2 = wikidataGeo._altecoM(c2, wdunuo)
c2 = formatnum(c2)
c2 = c2 .. " " .. "[[metro|m]]"
else
c2 = formatnum(wd)
c2 = c2 .. " " .. unuo
end
end
jes = "jes"
end
end
-- eldono, se ekzistas enhavo
if c2 ~= "" then
c2 = c2 .. direkto
c2 = notaldono(notovaloro,c2)
c2 = refaldono(referencovaloro,c2, referenconomo, referenconomodua)
c2 = c2 .. ligilo
aldonulinion(c1,c2,jes,"",montrilo)
end
elseif t == "areo" then
---------------- AREO ---------------------------------------------------------------------------------------------
-- komunuo parto kun priskribo
local c1 = pri or " - areo"
-- varianto de priskriba teksto
a1a = argumentoj(args,a1) or argumentoj(args,a1_a)
if a1a ~= "" and a1a ~= nil then
c1 = a1a
end
local c2 = ""
local c2a = ""
local rondumo = 0
local ligilo = ""
local jes = ""
if a3 ~= "" and a3 ~= nil then
rondumo = argumentoj(args,a3) or argumentoj(args,a3_a)
local testo = tonumber(rondumo)
if testo ~= nil then
rondumo = testo
else
rondumo = 0
end
end
if param ~= "" and param ~= nil then
local areo = tonumber (param)
if areo ~= nil then
local unuo = argumentoj(args,a2) or argumentoj(args,a2_a) or ""
-- ankoraŭfoje ŝanĝenda, por faciligi aldonojn
if unuo ~= "" then
if unuo == "m²" or unuo == "m2" then
areo = kalkuli._round(areo, rondumo)
c2 = formatnum(areo) .. ' m²'
else
c2 = areoKM2(areo,unuo,x,2)
c2a = areoHA(areo,unuo,x,rondumo)
c2 = c2 .. " (" .. c2a .. ")"
end
else
local testo = areotipo(tipo)
if testo == "m2" then
areo = kalkuli._round(areo, rondumo)
c2 = formatnum(areo) .. ' m²'
elseif testo == "km2" then
c2 = areoKM2(areo,"km²",x,2)
c2a = areoHA(areo,"km²",x,rondumo)
c2 = c2 .. " (" .. c2a .. ")"
end
end
else
c2 = mw.ustring.gsub(param,"%.",",")
nenumero=true -- aktivigas zorgigan kategorion
end
else
local unuo = argumentoj(args,a2) or argumentoj(args,a2_a) or ""
if unuo ~= nil and unuo ~= "" then
if unuo == "m²" or unuo == "m2" then
local wdmet, wdunuo = wikidataGeo._areoM2(wdid, "", "", "subfunkcio", rondumo)
if wdmet ~= nil and wdmet ~= "" and wd ~= "neniuj valoroj" and pk ~= "" and pk ~= nil then
wdmet = formatnum(wdmet) or wdmet
if wdunuo ~= nil and wdunuo ~= "" then
c2 = wdmet .. " " .. wdunuo
else
c2 = wdmet .. " [[Kvadrata metro|m²]]"
end
end
end
else
-- ĉu vikidatuma ero ekzistas
local wd, wdunuo = wikidataGeo._areoKM2(wdid,"","","subfunkcio",2)
if wd ~= "" and wd ~= nil and wd ~= "neniuj valoroj" and pk ~= "" and pk ~= nil then
wd = formatnum(wd) or wd
if wdunuo ~= "" and wdunuo ~= nil then
c2 = wd .. " " .. wdunuo
else
c2 = wd .. " [[Kvadrata kilometro|km²]]"
end
local wd2, wdunuo2 = wikidataGeo._areoHA(wdid,"","","subfunkcio",rondumo)
wd2 = formatnum(wd2) or wd2
if wdunuo2 ~= "" and wdunuo2 ~= nil then
c2a = wd2 .. " " .. wdunuo2
else
c2a = wd2 .. " [[Hektaro|ha]]"
end
if c2a ~= "" and c2a ~= nil then
c2 = c2 .. " (" .. c2a .. ")"
end
ligilo = wdlink (wdid, pk)
jes = "jes"
end
end
end
-- eldono
if c2 ~= "" then
local procentoj = v['procentoj'] -- por "tera areo" kaj "akva areo" aŭ io tia
if procentoj ~= "" and procentoj ~= nil then -- ambaŭ "if"-blokoj ne estas kombineblaj, ĉar en la unua la enhavo de la variablo "procentoj" ŝanĝiĝas.
procentoj = argumentoj(args,procentoj)
end
if procentoj ~= "" and procentoj ~= nil then
c2 = c2 .. " <small>(" .. procentoj .. "%)</small>"
end
c2 = notaldono(notovaloro,c2, a2)
c2 = refaldono(referencovaloro,c2, referenconomo, referenconomodua)
c2 = c2 .. ligilo
aldonulinion(c1,c2,jes,"",montrilo)
end
elseif t == "denso" then
---------------- DENSO ----------------------------------------------------------------------
if param ~= "" and param ~= nil then
if param == "auto" then
local rondumo = 2
if a4 ~= "" and a4 ~= nil then
rondumo = argumentoj(args,a4)
local testo = tonumber(rondumo)
if testo ~= nil then
rondumo = testo
else
rondumo = 2
end
end
local loghantaro = argumentoj(args,a1) or argumentoj(args,a1_a)
local areo = argumentoj(args,a2) or argumentoj(args,a2_a)
local d -- por denso
if loghantaro ~= "" and loghantaro ~= nil and areo ~= "" and areo ~= nil then
local l = tonumber(loghantaro)
local a = tonumber(areo)
if l ~= nil and a ~= nil then
local unuo = argumentoj(args,a3) or ""
local a2 -- por transkalkulata areo
if unuo ~= "" then
a2 = areoKM2(a,unuo,"jes")
if a2 ~= "" and a2 ~= nil then
d = l/a2
end
else
a2 = areoKM2(a,"km²","jes")
if a2 ~= "" and a2 ~= nil then
d = l/a2
end
end
d = kalkuli._round(d, rondumo)
d = formatnum(d) -- formatas numeron
d = d .. " loĝ./[[Kvadrata kilometro|km²]]"
aldonulinion(pri,d,"","",montrilo)
end
else
-- rigardu al la Vikidatumaj eroj
local wdloghantaro = wikidata.claim({args={pk,id=wdid} }) --wdparam(pk,wdid)
local wdareo, wdunuo = wikidataGeo._areoKM2(wdid,"","","subfunkcio",rondumo)
-- testo
local denso
if wdloghantaro ~= "" and wdloghantaro ~= nil and wdareo ~= "" and wdareo ~= nil then
local wdloghantaro2 = tonumber(wdloghantaro)
local wdareo2 = tonumber(wdareo)
if wdloghantaro2 ~= nil and wdareo2 ~= nil then
denso = wdloghantaro2 / wdareo2
local rondumo = 2
if a4 ~= "" and a4 ~= nil then
rondumo = argumentoj(args,a4)
local testo = tonumber(rondumo)
if testo ~= nil then
rondumo = testo
else
rondumo = 2
end
end
denso = kalkuli._round(denso, rondumo)
denso = formatnum(denso) -- formatas numeron
denso = denso .. " loĝ./[[Kvadrata kilometro|km²]]"
local ligilo1 = wdlink (wdid, pk)
local ligilo2 = wdlink (wdid, pk2)
denso = denso .. ligilo1 .. ligilo2
wd = "jes"
aldonulinion(pri,denso,wd,"",montrilo)
end
end
end
else
local n = mw.ustring.gsub(param, ",", ".") -- tonumber nur ĝuste funkcias, se la esperanta komo estas anstataŭigata per la angla punkto, se necesas
n = tonumber(n)
if n ~= nil then
n = mw.ustring.gsub(param, "%.", ",") -- angla punkto estu anstataŭigata per esperanta komo
n = n .. " loĝ./[[Kvadrata kilometro|km²]]"
n = notaldono(notovaloro,n)
n = refaldono(referencovaloro,n, referenconomo, referenconomodua)
aldonulinion(pri,n,"","",montrilo)
else
param = notaldono(notovaloro,param, a2)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
aldonulinion(pri,param,"","",montrilo)
nenumero=true -- aktivigas zorgigan kategorion
end
end
end
elseif t == "trafluo" or t == "volumeno" then
---------------- TRAFLUO ---------------------------------------------------------------------
if param ~= "" and param ~= nil then
local c1 = pri or t
local unuo
if t == "trafluo" then
unuo = "[[Kubmetro|m³]]/[[Sekundo|s]]"
elseif t == "volumeno" then
unuo = "[[Kubmetro|m³]]"
end
local unuo1 = argumentoj(args,a2)
param = formatnum(param) or param
if unuo1 ~= "" and unuo1 ~= nil then
param = param .. " " .. unuo1
else
param = param .. " " .. unuo
end
param = notaldono(notovaloro,param)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
aldonulinion(c1,param,"","",montrilo)
end
elseif t == "dato" then
----------------- DATO -----------------------------------------------------------------------
if param ~= "" and param ~= nil then
local c1 = pri or "Dato"
local c1a = argumentoj(args, a1) or argumentoj(args, a1_a) or ""
if c1a ~= "" then
c1 = c1a
end
-- testo, ĉu temas pri numero. se jes, supozeble iu transdonis la nuran jaron
local testo = tonumber(param)
if type(testo) == 'number' then
param = datoj._dato("","",param)
else
local s = anstatau(param, '-', '')
local testo = tonumber(s)
if type(testo) =='number' then
param = datoj._dato(param,'','')
end
end
param = notaldono(notovaloro,param, a2)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
-- por tekstoj, kiel ekz. ĉ. aŭ ĉirkaŭ
local prefikso = argumentoj(args,a2)
if prefikso ~= "" and prefikso ~= nil then
param = prefikso .. " " .. param
end
aldonulinion(c1,param,"","",montrilo)
end
elseif t == 'faldokomenco' then
--------------------------------------------------------------------
if param == 'jes' or param == '1' then
local faldo = kestero(pri,'+',fono,'0')
tabelo:wikitext(faldo)
end
elseif t == 'faldofino' then
--------------------------------------------------------------------
if param == 'jes' or param == '1' then
local faldo = kestero('','*')
tabelo:wikitext(faldo)
end
elseif t == 'aldono' then
--------------------------------------------------------------------
local kondicho = argumentoj(args, kon)
if param ~= '' and param ~= nil and kondicho ~= 'jes' then
local trajto = argumentoj(args,a1)
local k = v["aldono2"]
kesteroj(param, trajto, k)
end
-- loko por pliaj variantoj
end
---------------- FINO DE LA LAŬTIPA ANALIZO --------------------------------------------------------------
else
-- return '<span class="error">La submodulo verŝajne havas la malgustan strukturon</span>'
end
-- return k, v
-- end
end
-- nestado de interna ŝablono
if args['enhavo'] ~= "" and args['enhavo'] ~= nil then
-- tabela strukturo devas esti kreata de la interna ŝablono!
tabelo:newline()
tabelo:wikitext(args['enhavo'])
tabelo:newline()
end
local wybildo = args["vikivojaĝa bildo"]
local wikivoyage
if args['subŝablono'] ~= "jes" then
-- ŝanĝu ŝablonon
-- {{ŝanĝu ŝablonon|ŝablono=Informkesto geografiaĵo}}
local t = informkesto._ligilaro (shablono,fono,"","","","","","linio","","","",vikidatumoj)
if wybildo ~= "" and wybildo ~= nil then
if wybildo ~= "neniu" then
wikivoyage = wybildo
end
else
if wdid ~= "" and wdid ~= nil then
wikivoyage = wikidata.claim({args={"P948",id=wdid} })
else
wikivoyage = wikidata.claim({args={"P948"} })
end
end
tabelo:newline()
:wikitext(t)
:newline()
:done()
end
-- fino de la tabelo
r = tostring(tabelo)
if wikivoyage ~= "" and wikivoyage ~= nil then
-- metu bildeteton de Vikivojaĝo antaŭ la informkestan tabelon, kiel ĉe Informkesto urbo
r = '[[Dosiero:' .. wikivoyage .. '|center|775px|]]' .. r
end
-- aldono de zorgigaj kategorioj
local kat2 = ""
local geotipo = ""
if shablono == "Informkesto geografiaĵo" then
if tipo ~= "" and tipo ~= nil then
kat2 = "ŝablono Geokesto"
-- por ke "malsanulejo" kaj "hospitalo" havu komunan kategorion
if tipo == "malsanulejo" then
tipo = "hospitalo"
elseif tipo == "alta konstruaĵo" then
tipo = "konstruaĵo"
elseif tipo == "historia regiono" then
tipo = "historia teritorio"
elseif tipo == "oceano" then
tipo = "maro"
elseif tipo == "verda spaco" then
tipo = "parko"
elseif tipo == "protektita tereno" then
tipo = "protektita areo"
elseif tipo == "restoracio" then
tipo = "gastejo"
elseif tipo == "zoo" or tipo == "zoologia parko" then
tipo = "zoologia ĝardeno"
end
-- por dua, ne tre ofte uzata dua tipo
if tipob == "malsanulejo" then
tipob = "hospitalo"
elseif tipob == "alta konstruaĵo" then
tipob = "konstruaĵo"
elseif tipob == "historia regiono" then
tipob = "historia teritorio"
elseif tipob == "oceano" then
tipob = "maro"
elseif tipob == "verda spaco" then
tipob = "parko"
elseif tipob == "protektita tereno" then
tipob = "protektita areo"
elseif tipob == "restoracio" then
tipob = "gastejo"
elseif tipob == "zoo" or tipob == "zoologia parko" then
tipob = "zoologia ĝardeno"
end
geotipo = tipo
else
kat1 = ""
-- zorgiga kategorio
r = r .. [[Kategorio:Ŝablono geokesto sen tipo]]
end
elseif shablono == "Informkesto urbo" then
kat2 = shablono
geotipo = argumentoj(args,"tipo")
if geotipo ~= "" and geotipo ~= nil then
geotipo = geotipo
else
-- defaŭlta valoro
geotipo = "urbo"
end
else
kat1 = ""
end
if kat1 ~= "" then -- kat1 troviĝas je la komenco de la modulo, ĉar ĝi estas difinata nur, se oni elvokas la modulon en artikolo, ĉu rekte aŭ malrekte ne gravas
-- kategorio laŭ la skemoj [[Kategorio:{{{1|}}} kun ŝablono Geokesto]] kaj [[Kategorio:{{{tipo|}}} kun Informkesto urbo]]
local kategorio1 = "[[Kategorio:" .. geotipo .. kat1 .. kat2 .. "]]"
r = r .. kategorio1
-- por dua tipo
if tipob ~= "" and tipob ~= nil then
local kategorio2 = "[[Kategorio:" .. tipob .. kat1 .. kat2 .. "]]"
r = r .. kategorio2
end
if wdref == true then
r = r .. "[[Kategorio:Artikoloj kun referencoj el Vikidatumoj]]"
end
if artref == true then
r = r .. "[[Kategorio:Artikoloj kun referencoj en informkesto]]"
end
if nelogh == true then
r = r .. "[[Kategorio:Neloĝataj insuloj]]"
end
if nelogh2 == true then
r = r .. "[[Kategorio:Neloĝataj atoloj]]"
end
-- kategorioj por flagoj kaj blazonoj el Vikidatumoj
local flago = argumentoj(args,"flago")
if flago == "" or flago == nil then
-- {{#invoke:Wikidata|claim|P41}}
local wd = wikidata.claim({args={"P41"} })
if wd ~= "" and wd ~= nil then
local kategorio2 = "[[Kategorio:Artikoloj kun Vikidatumaj flagoj]]"
r = r .. kategorio2
end
end
local blazono = argumentoj(args,"blazono")
if blazono == "" or blazono == nil then
-- {{#invoke:Wikidata|claim|P94}}
local wd = wikidata.claim({args={"P94"} })
if wd ~= "" and wd ~= nil then
local kategorio3 = "[[Kategorio:Artikoloj kun Vikidatumaj blazonoj]]"
r = r .. kategorio3
end
end
if nenumero == true then
r = r .. "[[Kategorio:Nenombraj signifoj de nombraj parametroj]]"
end
end
if subshablono then
r = r .. '[[Kategorio:Artikoloj kun nestitaj informkestoj]]'
end
return r
end
end
-- redonu koloron laŭ "tipo"
function p._tipkoloro(tipoj,args)
local tipo = tipoj[1] or ""
if tipo ~= "" then
tipo = mw.ustring.lower(tipo)
end
local fono = koloroj.fonkoloro(tipo)
return fono
end
-- plia testo
function p._testo (tipoj,args)
-- antaŭdifino de kelkaj parametroj
if args["fono"] == "" or args["fono"] == nil then
args["fono"] = "#EFEFEF"
end
args["submodulo"] = "testado"
return p._informkesto(tipoj,args)
end
-- aliaj informkestoj
function p._urbo (tipoj,args)
-- antaŭdifino de kelkaj parametroj
if args["fono"] == "" or args["fono"] == nil then
--args["fono"] = "#EFEFEF"
if args['malfondo'] or args['malapero'] then
args["fono"] = "#F9F9F9"
elseif args['tipo'] == "vilaĝo" then
args["fono"] = "#96C8A2"
else
args["fono"] = "#DDFFDD"
end
end
args["submodulo"] = "urbo"
args["ŝablono"] = "Informkesto urbo"
args['uzuiso'] = "jes" -- aktivigas la "tradukilon" por regiono-ISO al maponomo
if args['tipo1'] == "" or args['tipo1'] == nil then
args['tipo1'] ="normala"
end
if args['tipo2'] == "" or args['tipo2'] == nil then
args['tipo2'] ="normala"
end
if args['tipo'] == "" or args['tipo'] == nil then
tipoj[1] = "urbo"
else
tipoj[1] = args['tipo']
end
if args['mapligilo'] == "" or args['mapligilo'] == nil then
args['mapligilo'] ="jes"
end
if args['denseco'] == "" or args['denseco'] == nil then
args['denseco'] ="auto"
end
local r = p._informkesto(tipoj,args)
if kat1 ~= "" then
local lando = args['lando']
-- {{#invoke:CatUtil|city|tipo={{{tipo}}}|lando={{{lando}}}|ordigilo={{#if:{{{nomo|}}}|{{{nomo}}}|{{PAGENAMEBASE}}}}|ŝablono=Informkesto urbo<!--fino "invoke"-->}}}}}}
local kat = kategorioj.city({args={tipo=tipo,lando=lando,ordigilo=titolo,['ŝablono']=args["ŝablono"]} })
if kat ~= "" and kat ~= nil then
r = r .. kat
end
end
return r
end
--
function p._wdlink (tipoj,args)
local wd = args['wd']
local pkodo = args['pkodo']
return wdlink (wd, pkodo)
end
-- helpaj funkcioj por la frame-parametraro kaj parametra transpreno el ŝablono resp. #invoke:
local function processKestoArgs(args)
-- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of
-- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order
-- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example
-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed.
args = type(args) == 'table' and args or {}
local tipoj = {}
local namedArgs = {}
for k, v in pairs(args) do
if type(k) == 'number' and type(v) == 'string' then -- Make sure we have no non-string babel names.
table.insert(tipoj, k)
elseif type(k) ~= 'number' then
namedArgs[k] = v
end
end
table.sort(tipoj)
for i, v in ipairs(tipoj) do
tipoj[i] = args[v]
end
return tipoj, namedArgs
end
local function makeWrapper(funcName)
-- Processes external arguments and sends them to the alia functions.
return function (frame)
-- If called via #invoke, use the args passed into the invoking
-- template, or the args passed to #invoke if any exist. Otherwise
-- assume args are being passed directly in from the debug console
-- or from another Lua modulo.
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs(frame.args) do
origArgs = frame.args
break
end
else
origArgs = frame
end
-- Trim whitespace and remove blank arguments.
local args = {}
for k, v in pairs(origArgs) do
if type(v) == 'string' then
v = mw.text.trim(v)
end
if v ~= '' then
args[k] = v
end
end
local templateArgs = frame:getParent().args
args['Mapo en angulo'] = templateArgs['Mapo en angulo'] or args['Mapo en angulo']
return p[funcName](processKestoArgs(args)) -- passes two tables to func: an array of portal names, and a table of named arguments.
end
end
local funcNames = {'informkesto', 'testo', 'urbo', 'wdlink', 'tipkoloro'}
for _, funcName in ipairs(funcNames) do
p[funcName] = makeWrapper('_' .. funcName)
end
return p