Modulo:Geografiaĵoj/provejo

Dokumentado 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-04-27-- ĉ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 nomspacolocal kalkuli = require( "Modulo:Math")local wikidata = require ("Modulo:Wikidata")local wikidataGeo = require ("Modulo:Wikidata/geografio")local lucky_bildo, wikidataBildo = pcall ( require,"Modulo:Wikidata/bildoj/provejo" )local listoj = require ("Modulo:Listutil")local bildoj = require ("Modulo:InfoboxImage")local prenubildon = require ("Modulo:Portalo").imagelocal 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 submodulojlocal 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 = ""        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        endlocal function argumentoj(args, par)if par ~= "" and par ~= nil thenlocal varianto = mw.ustring.gsub(par, "_", " ")   -- ŝanĝo de _ el parametro al spacolocal varianto2 = mw.ustring.upper(par)  -- ŝanĝo al majusklaj literojlocal varianto3 = mw.ustring.upper(mw.ustring.sub(par, 1, 1)) .. mw.ustring.sub(par, 2)   -- nur la unua litero fariĝas majusklolocal r = args["" .. par] or args["" .. varianto] or args["" .. varianto2] or args["" .. varianto3] or ""if r ~= "" thenreturn rendendend-- por koordinataj parametrojlocal function koordargumentoj(args, a1)if a1 ~= "" and a1 ~= nil thenif a1 == "situo" thena1 = ""else a1 = a1 .. "_"endlocal 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 thenif lat_m ~= "" and lat_m ~= nil thenlat_d = lat_d .. "/" .. lat_mif lat_s ~= "" and lat_s ~= nil thenlat_d = lat_d .. "/" .. lat_sif lat_NS ~= "" and lat_NS ~= nil thenlat_d = lat_d .. "/" .. lat_NSendendendif long_m ~= "" and long_m ~= nil thenlong_d = long_d .. "/" .. long_mif long_s ~= "" and long_s ~= nil thenlong_d = long_d .. "/" .. long_sif long_EW ~= "" and long_EW ~= nil thenlong_d = long_d .. "/" .. long_EWendendendreturn lat_d, long_dendend -- a1end-- disigo de helpa parametro por koordinatojlocal function koordtipo(teksto)if teksto ~= "" and teksto ~= nil thenlocal strings = mw.text.split(teksto, "_", plain)local regiono = ""local tipo = ""for k, v in pairs(strings) doif mw.ustring.sub(v,1,7) == "region:" thenregiono = mw.ustring.sub(v,8)elseif mw.ustring.sub(v,1,5) == "type:" then tipo = mw.ustring.sub(v,6)endendreturn regiono, tipoendend-- Vikidatumaj helpaj funkcioj-- transprenas vikidatuman eron, se ne temas pri bildolocal function wdparam(pk,wdid,ref)-- analizo, ĉu pk enhavas valoron.if pk ~= "" and pk ~= nil thenlocal r, r2if ref == "auto" thenif 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"} })endif r ~= "" and r ~= nil thenif ref ~= "auto" and ref ~= nil and ref ~= "" thenwdref = trueendreturn r, refendelseif wdid ~= "" and wdid ~= nil thenr = wikidata.claim({args={pk,id=wdid} })elser = wikidata.claim({args={pk} })endif r ~= "" and r ~= nil thenreturn r, refendendend endlocal function wdlink (id, pkodo)-- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P374|[+]]]</span>if pkodo ~= "" and pkodo ~= nil thenlocal ligiloif id ~= "" and id ~= nil thenligilo = idelseligilo = wikidata.pageId({args = {} }) or ""endif ligilo thenligilo = ' <span class="el_wd">[[:d:' .. ligilo .. "#" .. pkodo .. '|[+]]]</span>'endreturn ligiloendend-- helpa funkcio por "kodo" kaj "laŭ" -- ankoraŭ malkompletalocal function lauparam(args,a2,wdid)    -- por kodoif a2 ~= "" and a2 ~= nil thenlocal c1 = ""local c2 = ""local a2a = ""a2 = argumentoj(args,a2)if a2 == "P374" or a2 == "INSEE" then-- Francioc1 = "INSEE kodo"a2a = "P374"elseif a2 == "P782" or a2 == "LAU" then-- Eŭropa unioc1 = "LAU kodo"a2a = "P782"elseif a2 == "P382" or a2 == "CBS" then-- Nederlandoc1 = "CBS kodo"a2a = "P382"elseif a2 == "P439" or a2 == "Komunuma ŝlosilo" then-- Germanioc1 = "Komunuma ŝlosilo"a2a = "P439"elseif a2 == "P1388" or a2 == "Regiona ŝlosilo" then-- Germanioc1 = "Regiona ŝlosilo"a2a = "P1388"elseif a2 == "P525" or a2 == "Sveda komunuma ŝlosilo" then-- Svedioc1 = "Sveda komunuma ŝlosilo"a2a = "P525"elseif a2 == "P721" or a2 == "OKATO" then-- Ruslandoc1 = "OKATO"a2a = "P721"elseif a2 == "P764" or a2 == "OKTMO" then-- Ruslandoc1 = "OKTMO"a2a = "P764"elseif a2 == "P1653" or a2 == "TERYT" then-- Pollandoc1 = "TERYT"a2a = "P1653"endc2 = wdparam(a2a,wdid)if c2 ~= "" and c2 ~= nil thenreturn c1, c2, a2aendendend-- aldonaj parametroj por bildojlocal 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" thenlocal r = ""if parto == "priskribo" thenr = "priskribo de " .. par elseif parto == "grandeco" thenr = "grandeco de " .. parendif r ~= "" thenr = argumentoj(args,r)if r ~= "" and r ~= nil thenreturn rendendendendlocal function simbolo_priskribo (pk2, wdid)local rif pk2 == 'P163' or pk2 == 'P237' thenlocal nid if wdid ~= "" and wdid ~= nil thennid = wikidata.claim({args = { pk2, id = wdid, parameter='numeric-id'} })elsenid = wikidata.claim({args = { pk2, parameter='numeric-id'} })endif nid ~= "" and nid ~= nil thenlocal lif pk2 == 'P163' thenl = 'Flago'elseif pk2 == 'P237' thenl = 'Blazono'endr = '[[Specialaĵo:AboutTopic/Q' .. nid .. '|' .. l .. ']]'endendreturn r or ""endlocal function bildaro (args, param, a1, a1_a, a2, a2_a, par, par_a, pri, pk, pk2, wdid)local bildolocal priskriboBlocal 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 thenpriskriboB = priskriboelselocal priskriboT = simbolo_priskribo (pk2, wdid)if priskriboT ~= "" thenpriskriboB = priskriboTelsepriskriboB = priendendelseif param ~= "ne" and param ~= "neniu" thenif 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 priskriboAif wdid ~= "" and wdid ~= nil thenbildo, 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"} })elsebildo, 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"} })endif priskribo ~= "" and priskribo ~= nil thenpriskriboB = priskribowd = 1elseif priskribo ~= priskriboA and priskriboA ~= pri  then       priskriboB = priskriboAwd = 2elsepriskriboB = priwd = 1endif bildo == "" or bildo == nil thenwd = nilendendendreturn bildo, priskriboB, wdend-- helpa funkcio por kontrastolocal function kolorkontrasta_rilatumo (teksto, fono)local frame = mw.getCurrentFrame()local n = frame:expandTemplate {title="Kolorkontrasta rilatumo",args ={teksto, fono}}return nend-- 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"-- kaplinioif klaso ~= "" and klaso ~= nil and type(klaso) == "string" thenklaso = "kaplinio " .. klasoelseklaso = "kaplinio mapo"endif wd == "jes" thenklaso = klaso .. " wikidata-content"endlocal tabelkapoif montrilo ~= "" and montrilo ~= nil thentabelkapo = tabelo:tag('tr'):attr('title',montrilo):addClass('mergedtoprow')elsetabelkapo = tabelo:tag('tr')endlocal teksto = "#000"-- se koloroj havas tro malaltan kontraston, korektu la tekstokoloronlocal testo = kolorkontrasta_rilatumo(teksto,fono)testo = tonumber(testo)if type(testo) == 'number' and testo < 4.5 thenteksto = "white"end-- kaplinia ĉelolocal 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()endend-- tabela subtitilolocal function tabelsubtitolo(titolo, fono, montrilo)if titolo == nil thentitolo = ""endlocal subtitolo1if montrilo ~= "" and montrilo ~= nil thensubtitolo1 = tabelo:tag('tr'):attr('title',montrilo):addClass('mergedrow')elsesubtitolo1 = tabelo:tag('tr')endlocal teksto = "#000"-- se koloroj havas tro malaltan kontraston, korektu la tekstokoloronlocal testo = kolorkontrasta_rilatumo(teksto,fono)testo = tonumber(testo)if type(testo) == 'number' and testo < 4.5 thenteksto = "white"endif fono ~= "" and fono ~= nil thenlocal 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()elselocal titol1chelo = subtitolo1:tag('th'):css('text-align','center'):attr('colspan','2'):wikitext(titolo):done():newline()endend-- bilda ĉelo por unuopa bildolocal function unuopabildo(bildo, wd)if bildo == nil thenbildo = ""endif wd == "jes" thenwd = "wikidata-content"elsewd = ""endlocal 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 bildolocal function duopajbildoj(bildo1, bildo2, priskribo1, priskribo2, wd, wd2)if bildo1 == nil thenbildo1 = ""endif bildo2 == nil thenbildo2 = ""endlocal bildoj = tabelo:tag("tr")local klaso1 = ""local klaso2 = ""if wd == 1 or wd == 2 thenklaso1 = "wikidata-content"endlocal bildchelo = bildoj:tag("td"):addClass(klaso1):css('font-size','smaller'):css('text-align','center'):wikitext(bildo1)ifwd2 == 1 or wd2 == 2 thenklaso2 = "wikidata-content"endlocal 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) thenlocal priskriboj = tabelo:tag("tr")if priskribo1 == nil thenpriskribo1 = ""endif wd == 2 thenklaso1 = "wikidata-content"elseklaso1 = ""endlocal priskribochelo = priskriboj:tag("td"):addClass(klaso1):css('font-size','smaller'):css('text-align','center'):wikitext(priskribo1)if priskribo2 == nil thenpriskribo2 = ""endif wd2 == 2 thenklaso2 = "wikidata-content"elseklaso2 = ""endlocal priskribochelo = priskriboj:tag("td"):addClass(klaso2):css('font-size','smaller'):css('text-align','center'):wikitext(priskribo2)endend-- helpaj funkcioj sen ŝablonoj-- c1 - enhavo de ĉelo 1-- c2 - enhavo de ĉelo 2-- wd - ĉu datoj el Vikidatuma erolocal function aldonulinion (c1, c2, wd, v, montrilo)--local tabellinio = mw.html.create("tr")local tabellinioif montrilo ~= "" and montrilo ~= nil thentabellinio = tabelo:tag('tr'):attr('title',montrilo):addClass('mergedrow')elsetabellinio = tabelo:tag('tr')endlocal etikedo = "th"if mw.ustring.sub(c1,1,3) == " - " thenv = "td"endif v == "td"  thenetikedo = vendlocal chelo1if montrilo ~= '' and montrilo ~= nil thenchelo1 = tabellinio:tag(etikedo):css('text-align','left'):css('padding','0.4em 0.2em 0.4em 0.8em'):css('white-space','nowrap'):wikitext(c1):done()elsechelo1 = tabellinio:tag(etikedo):css('text-align','left'):wikitext(c1):done()endif wd == "jes" thenwd = "wikidata-content"elsewd = ""endlocal chelo2 if montrilo ~= '' and montrilo ~= nil thenchelo2 = tabellinio:tag('td'):addClass(wd):css('padding','0.4em 0.2em 0.4em 0.8em'):wikitext(c2) :done():newline()elsechelo2 = tabellinio:tag('td'):addClass(wd):wikitext(c2) :done():newline()endend-- unuopa ĉelo-- c - enhavo de la ĉelo-- v - varianto de ĉelo-- wd - ĉu datoj el Vikidatuma erolocal function aldonuchelon (c, v, wd, montrilo)local t = ""local css_klaso = "mergedrow"local shtopado = '0.4em 0.2em'if v == "titolo" thent = "th"elseif v == "linio"thent = "td"css_klaso = "mergedtoprow"shtopado = '0'elset = "td"endif montrilo == nil thenmontrilo = ""endlocal tabellinio = tabelo:tag('tr'):attr('title',montrilo):addClass(css_klaso)if wd == "jes" thenwd = "wikidata-content"elsewd = ""endlocal 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 tekstolocal function notaldono(noto, param)if noto ~= "" and noto ~= nil thenparam = param .. "  ''" .. noto .. "''" -- aldonas noton kursivereturn paramelsereturn paramendend-- por aldono de referencolocal function refaldono(referenco, param, refnomo, refnomodua)if (referenco ~= "" and referenco ~= nil) or (refnomo ~= "" and refnomo ~= nil) thenlocal rlocal frame = mw.getCurrentFrame()if referenco ~= "" and referenco ~= nil thenlocal strings= mw.text.split(referenco, "///", plain)local nombro = #stringsif nombro > 1 thenfor k, ref in pairs(strings) doif refnomo ~= "" and refnomo ~= nil thenif refnomodua ~= "" and refnomodua ~= nil thenr = frame:extensionTag('ref', {name= refnomo } )elser = frame:extensionTag('ref', ref, {name=refnomo} )endparam = param .. relseif ref ~= "" and ref ~= nil thenr = frame:extensionTag('ref',  ref )param = param .. rendendreturn paramendendif refnomo ~= "" and refnomo ~= nil thenif refnomodua ~= "" and refnomodua ~= nil thenr = frame:extensionTag('ref', {name= refnomo } )elser = frame:extensionTag('ref', referenco, {name=refnomo} )endparam = param .. rartref = truereturn paramelseif referenco ~= "" and referenco ~= nil thenr = frame:extensionTag('ref',  referenco )param = param .. rartref = truereturn paramendelsereturn paramendendlocal function kesteroj(nomo, trajto, k)if trajto == 'ĉelo' thentabelo:wikitext('<tr><td colspan="2" style="padding:0"><div>\n')if k == 'kaŝu' thentabelo:wikitext('{| class="collapsible collapsed" style="width:23em"\n')elsetabelo:wikitext('{| style="width:23em"\n')endtabelo:wikitext('|-\n')end--tabelo:wikitext('\n<nowiki/>\n')tabelo:wikitext('\n\n')tabelo:wikitext(nomo)if trajto == 'ĉelo' thentabelo:wikitext('\n\n|}')tabelo:wikitext('\n\n</div></td></tr>')endend-- kalkulaj funkcioj-- transkalkulas al kvadrataj kilometrojlocal function areoKM2(areo,unuo,subfunkcio,rondumo)local ru = "[[Kvadrata kilometro|km²]]"local rondumo = tonumber(rondumo)if rondumo == nil or rondumo == "" thenrondumo = 0endif areo ~= nil and areo ~= "" and unuo ~= nil and unuo ~= "" thenlocal r = 1if unuo == "km²" or unuo == "km2" or unuo == "km" then  -- jam estas km²r = areoelseif unuo == "ha" then-- el hektaroj al km²     r = areo / 100r = kalkuli._round(r,rondumo)elseif unuo == "m²" then -- el metroj al km²r = areo / 1e6r = kalkuli._round(r,rondumo)elseif unuo == "cm²" then-- el cm² al km²r = areo / 1e10r = kalkuli._round(r,rondumo)elser = areo-- ĉe nekonata unuo, redonu la numeron senŝanĝe, supozante, ke estas jam km²endif subfunkcio == "jes" thenreturn r -- eldono sen unuoelser= formatnum(r)    -- elvoko de helpa funkcio, kiu mem elvokas la malkomponilan funkcion {{formatnum:}}return r .. " " .. ru-- eldono kun unuoend--else--return "neniuj valoroj"endend-- transkalkulas al hektarojlocal function areoHA(areo, unuo, subfunkcio,rondumo)local ru = "[[Hektaro|ha]]"local rondumo = tonumber(rondumo)if rondumo == nil or rondumo == "" thenrondumo = 0endif areo ~= nil and areo ~= "" and unuo ~= nil and unuo ~= "" thenlocal r = 1if unuo == "km²" or unuo == "km2" or unuo == "km" then-- el km² al hektarojr = areo * 100r = kalkuli._round(r,rondumo)elseif unuo == "ha" then-- jam hektaroj      r = areo elseif unuo == "m²" then-- el metroj al hektarojr = areo / 1e4r = kalkuli._round(r,rondumo)elseif unuo == "cm²" then-- el cm² al hektarojr = areo / 1e8r = kalkuli._round(r,rondumo)elser = areo * 100 -- ĉe nekonata unuo, kalkulu kvazaŭ jam estus km²r = kalkuli._round(r,rondumo)endifsubfunkcio == "jes" thenreturn r-- eldono sen unuoelser= formatnum(r)     -- elvoko de helpa funkcio, kiu mem elvokas la malkomponilan funkcion {{formatnum:}}return r .. " " .. ru-- eldono kun unuoend--else--return "neniuj valoroj"endend-- enplektas la submodulon pri areo, ĉu estu defaŭlte km² aŭ m²local function areotipo(tipo)local rlocal test = tipoareo.areo(tipo)if test ~= "" and test ~= nil thenr = testendreturn rend-- por landaj flagoj kun sekva tekstolocal function flago(nomo)if nomo == "" or nomo == nil then return endlocal testo = ligiloj._chuligilo2(nomo)local ligilo = ""if testo == "ligu" thenligilo = "[[" .. nomo .. "]]"elseligilo = nomonomo = ligiloj._delink(nomo)endlocal n = prenubildon{nomo} -- ne estu ronda krampo, ĉar estas importita funkcioif n ~= "Portal-puzzle.svg" and n ~= nil thenn = "[[Dosiero:" .. n .. "|18px]]&nbsp;" .. ligiloreturn nelsereturn ligiloendend-- malkomponilaj funkcioj-- formatigi numeronfunction formatnum(numero)local frame = mw.getCurrentFrame()local n = tonumber(numero)if n ~= nil thenlocal r = frame:callParserFunction( "formatnum", n )return rendend-- ŝablonelvokoj-- por "PAGENAMEBASE"local function paghenamebase ()local frame = mw.getCurrentFrame()local n = frame:expandTemplate {title="PAGENAMEBASE",}return nend-- por koordinatojlocal function koordinatoj(latitudo, longitudo, regiono, tipo, nomo, supre, teksto, globo )local t = "dms"if teksto ~= "" and teksto ~= nil thent = tekstoendlocal 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 informkestoarticle=supre,     -- ĉu ankaŭ supre? se jes, la parametro havu la valoron /globe=globo}}return nend-- 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, yif neniukoordinato ~= "" and neniukoordinato ~= nil thenx = 50y = 50endlocal angulmapo, angulmapo2, aldono, anguldosiero, stilo, angulo, angulstilo, angullarghoif 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 thenMarko = ""elseif marko ~= "" and marko ~= nil thenMarko = markoelseif tipo ~= "" and tipo ~= nil thenlocal m = mapsimbolo.simbolo(tipo)if m ~= "Red_pog.svg" thenMarko = mendendendlocal frame = mw.getCurrentFrame()if angulmapo == "" thenlocal s = frame:expandTemplate {title="Surmapo",args={mapo}}angulmapo = sendlocal 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 nend-- mapo per la ŝablono {{Situo sur mapo}}, sed ĉikaze sen koordinatojlocal function situomaposenmarko(mapo,priskribo,mapofono,tipo)local frame = mw.getCurrentFrame()local n = frame:expandTemplate {title="Situo sur mapo",args ={Alia_mapo=mapo,      Titolo=priskribo, X="50",       -- malaperigas koordinatojnY="50",       -- malaperigas koordinatojnMapo_fono=mapofono,montrukoordinatojn="ne",['Loko de titolo']="centre",Floso="center",Bordo="none",senombre="jes"}}return nend-- "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 thenlocal frame = mw.getCurrentFrame()local n = frame:expandTemplate {title= "ParmPart",args = {"1",isokodo}}--kodo = isokodokodo = nelsekodo = "??"endlocal frame = mw.getCurrentFrame()local n = frame:expandTemplate {title="Info ISO-3166-2",args ={code=kodo,"map"}}return nend-- komutebla mapolocal 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ĵomarko=mapsimbolo.simbolo(tipo) or "Red_pog.svg"elseif markospeco ~= "" and markospeco ~= nil thenmarko = ""elseif marko == "" or marko == nil thenmarko = "Red_pog.svg"endendlocal 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 mapotipo1=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 nend-- por altecolocal function alteco(alto,kodo)local frame = mw.getCurrentFrame()local rif 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" thenr = frame:expandTemplate {title="Alto",args={alto,"DE-NHN"}}elser = frame:expandTemplate {title="Alto",args={alto}}endreturn rendlocal function CoordinateLAT(lat)local frame = mw.getCurrentFrame()local rr = frame:expandTemplate {title="CoordinateLAT",args={lat}}return rendlocal function CoordinateLONG(long)local frame = mw.getCurrentFrame()local rr = frame:expandTemplate {title="CoordinateLONG",args={long}}return rend-- jen funkcio por elvoko de la ŝablono mapligilolocal function mapligilo(komuneja_mapo, nomo, zomo, lat1, long1, lat2, long2, varianto, wd_id)local frame = mw.getCurrentFrame()local r-- la unua litero fariĝu majusklalocal 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.mapligiloif type(mapo_listo) == "table" thenfor k, v in pairs(mapo_listo) dolocal varianto2, streko, fono, markilo, markilo2, markilokoloro, grupoif type(v) == 'table' thenvarianto2=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 traktadoif grupo == '3' thenlocal 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 relseif grupo == '2' or grupo == '1' thenlocal 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 rendendendendendend-- anstataŭu ionlocal function anstatau(teksto, serchu, metu)local frame = mw.getCurrentFrame()local r = frame:expandTemplate {title='Ŝablono:Anstataŭu',args={teksto,serchu, metu}}return rend-- alvoko de informkestera ŝablonolocal 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 rend-- traktu ligilon per {{URL}}local function url(ligilo, teksto)local frame = mw.getCurrentFrame() local r = frame:expandTemplate {title='Ŝablono:URL',args = {ligilo,teksto}}return rendlocal p = {}-- spaco por la eksportataj funkciojfunction 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 ~= "" thentipo = mw.ustring.lower(tipo)endif tipob ~= "" thentipob = mw.ustring.lower(tipob)end-- formatojlocal fono = args['fono'] or ""local fono2 = args['fono2'] or "#efefef"if fono == "" then if tipo ~= "" thenfono = koloroj.fonkoloro(tipo)elsefono = "#FFFFFF"endendlocal shablono-- parametro kun nomo de la ŝablonoif args['ŝablono'] ~= "" and args['ŝablono'] ~= nil thenshablono = args['ŝablono']elseshablono = "Informkesto geografiaĵo"end-- variablo por ligilo al Vikidatuma paĝolocal vikidatumoj=""if shablono == "Informkesto geografiaĵo" or shablono == "Informkesto urbo" thenvikidatumoj="jes"end-- helpa parametro por testoj de valoroj el Vikidatumojlocal wdid  if wdidstirilo == true thenwdid = args['wd'] or args['wd-id']end-- pliaj variablojlocal r = ""-- enhavo de la informkesto local dua_klaso = ""if shablono == "Informkesto geografiaĵo" thendua_klaso = ' geography 'endif klaso ~= "" and klaso ~= nil thenklaso = "infobox " .. dua_klaso .. klasoelseklaso = "infobox" .. dua_klasoend-- komenco de la tabelolocal titolo = args["titolo"] or args["nomo"] or "" -- pliaj variantoj aldoneblasif titolo == "" thentitolo = paghenamebase ()endlocal largho = args["informkesta larĝo"] or "23em"-- ekuzi submodulojn por la informkesta strukturolocal 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 funkciastabelo = 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ĝatatitolklaso = 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 funkciastabelo = mw.html.create()subshablono = trueend-- posttitola parto de la informkestolocal variabloj = 'Modulo:Geografiaĵoj/' .. submodulolocal parametroj = mw.loadData(variabloj)local listo = parametroj.liniojlocal 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-- testolocal slocal par, t, pk, pk2, a1, a2, pri, pri2, iso, kon, defaultofor k, v in pairs(listo) do--s = type(k)--if s == "string" then--return k--elseif s == "table" then--return k--elseif s == "number" thenif type(v) == "table" thenpar = 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 argspar = tostring(par)-- local param = args[par]or ""local param = argumentoj (args, par) or argumentoj(args, par_a)local param2if par2 ~= "" and par2 ~= nil thenparam2 = 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 thenmontrilo = defmontriloend-- por notojlocal noto2if noto == "_noto" thennoto2 = par .. noto-- kunigas parametrajn nomojn, ne valorojnelseif noto == "noto por " thennoto2 = noto .. par-- kunigas parametrajn nomojn, ne valorojnendlocal notovaloro = argumentoj(args,noto2)-- transprenas la valoron el la ŝablono-- por referencojlocal referenco2, referenco2a, referenco2bif referenco == "_referenco" thenreferenco2 = par .. referenco-- kunigas parametrajn nomojn, ne valorojnreferenco2a = referenco2 .. "_nomo"referenco2b = referenco2 .. "_nomo-dua"elseif referenco == "referenco por " thenreferenco2 = referenco .. par-- kunigas parametrajn nomojn, ne valorojnreferenco2a = "nomo por " .. referenco2 referenco2b = "nomo-dua por " .. referenco2 endlocal referencovaloro = argumentoj(args,referenco2)-- transprenas la valoron el la ŝablonolocal referenconomo = argumentoj(args,referenco2a)-- transprenas la valoron el la ŝablonolocal referenconomodua = argumentoj(args,referenco2b)-- transprenas la valoron el la ŝablonoif t == "subtitolo" then  -------------------- SUBTITOLO -------------------------------------------------local kondicho = argumentoj(args, kon)if args['subŝablono'] ~= "jes" and kondicho ~= 'jes' thenif param ~= "" and param ~= nil thentabelsubtitolo(param, fono, montrilo)endendelseif t == 'subtitolo2'then--------------------------------------------------------------------------------local kondicho = argumentoj(args, kon)if param ~= "" and param ~= nil and kondicho ~= 'jes' thenlocal r = paramif a1 ~= "" and a1 ~= nil thenlocal nombro = tonumber(a1)if nombro ~= nil thenfor i=1, nombro dolocal titolo = par .. ilocal st = argumentoj(args, titolo) or ""if st ~= "" thenr = r .. ', ' .. '<span style="white-space: nowrap;">' .. st .. '</span>'endendendendtabelsubtitolo(r,fono, montrilo)endelseif 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 ĝinif pri ~= "" and pri ~= nil thenif param ~= "" and param ~= nil thenpri = paramendendif grupanoj ~= "" and grupanoj ~= nil thenlocal nombro = #grupanoj-- la disiga signaro estas ///local string = mw.text.split(grupanoj, "///", true)-- helpa parametro por eviti pli ol unu strionlocal n = 1if shablono == "Informkesto urbo" thenfono2 = args['fono']elseif v["koloro"] == "cheftitolo" thenfono2 = fonoendfor k, v in pairs(string) dolocal testo = argumentoj(args,v)-- aldono por Informkesto urbo kaj similaj ŝablonojif v == "situo sur mapo" and (testo == "" or testo == nil) thentesto = argumentoj(args,"regiono-ISO")elseif v == "koordinatoj" and (testo == "" or testo == nil) thenlat, lon = koordargumentoj(args,"situo")if lat and lon thentesto = "jes"elselat = argumentoj(args,"latitudo")lon = argumentoj(args,"longitudo")if lat and lon thentesto = "jes"endendelseif testo == "" or testo == nil thenlocal chupkodo = mw.ustring.match(v,"P[0-9]*([0-9])")  --analizo, ĉu estas pkodo if chupkodo ~= nil thentesto=wdparam(v,wdid)endendif testo ~= "" and testo ~= nil and n == 1 thenif t == 'subtitolo3' thenlocal pri2 = argumentoj(args,a1)if pri2 ~= "" and pri2 ~= nil thenpri = pri2endtabelsubtitolo(pri, fono2, montrilo)elseif t == '-'thenaldonuchelon(c,"linio")endn = n +1endendendelseif t == "bildo" then---------------- BILDO -------------------------------------------------------------------------------------------------------------- bilda parto -- bildo estas malaperigebla per certaj valoroj-- komunaj variablojlocal 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 thenif 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)endelse 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 bildoif wdid ~= "" and wdid ~= nil thenbildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2,id=wdid, tabelo=args, grupo=grupo} })elsebildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2, tabelo=args, grupo=grupo} })endif bildo thenunuopabildo(bildo,"jes")endendendelseif t == "bildo2" then---------------- BILDO2 --------------------------------------------------------------------------------------------------------------- unue transprenas la bildojn el parametroj aŭ Vikidatumaj erojlocal bildolocal bildo2local priskriboBlocal priskriboClocal kondicho = argumentoj(args, kon)-- unua bildobildo, priskriboB, wd = bildaro (args, param, a1, a1_a, a2, a2_a, par, par_a, pri, pk, pk2, wdid)-- dua bildobildo2, 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 ĉelojnif bildo ~= "" and bildo ~= nil and bildo2 ~= "" and bildo2 ~= nil  and kondicho ~= 'jes' thenif priskriboB == "" or priskriboB == nil thenpriskriboB = pri or ""endif priskriboC == "" or priskriboC == nil thenpriskriboC = pri2 or ""endduopajbildoj(bildo,bildo2,priskriboB,priskriboC, wd, wd2)elseif bildo ~= "" and bildo ~= nil and (bildo2 == "" or bildo2 == nil) and kondicho ~= 'jes' thenif priskriboB ~= "" and priskriboB ~= nil thenbildo = bildo .. "<div>" .. priskriboB .. "</div>"elseif pri ~= "" and pri ~= nil then-- defaŭlta priskribobildo = bildo .. "<div>" .. pri .. "</div>"endif wd == 1 or wd == 2 thenwd = "jes"endunuopabildo(bildo, wd)elseif (bildo == "" or bildo == nil) and bildo2 ~= "" and bildo2 ~= nil  and kondicho ~= 'jes' thenif priskriboC ~= "" and priskriboC ~= nil thenbildo2 = bildo2 .. "<div>" .. priskriboC .. "</div>"elseif pri2 ~= "" and pri2 ~= nil then-- defaŭlta priskribobildo2 = bildo2 .. "<div>" .. pri2 .. "</div>"endif wd2 == 1 or wd2 == 2 thenwd2 = "jes"endunuopabildo(bildo2,wd2)endelseif 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 priskribolocal a2alocal prialtlocal paramaltif pri ~= "" thenprialt = pria1a = argumentoj(args,a1) or argumentoj(args,a1_a)if a1a ~= "" and a1a ~= nil thenpri = a1aendif v['sub'] == 1 thenpri = " - " .. prienda2a = argumentoj(args,a2) or argumentoj(args,a2_a)if a2a ~= "" and a2a ~= nil thenif t == "kodo" thenpri = pri .. " laŭ " .. a2aelseif t == "ekde" thenif a3 ~= "" and a3 ~= nil thenlocal a3a = argumentoj(args,a3) or argumentoj(args,a3_a)if a3a ~= "" and a3a ~= nil thena3a = " ĝis " .. a3apri = pri .. " (ekde " .. a2a .. a3a .. ")"elsepri = pri .. " (ekde " .. a2a .. ")"endelsepri = pri .. " (ekde " .. a2a .. ")"endendendendif v['kondicho'] ~= "" and v['kondicho'] ~= nil and (param == "" or param == nil) thenlocal kondicho = v['kondicho']local strings = mw.text.split(kondicho, "///", plain)for k, v in pairs(strings) dolocal testo = argumentoj(args,v)if testo ~= "" and testo ~= nil thenparam = "&nbsp;"breakendendend-- pliaj informoj pri situolocal situo2 = ""if situo ~= "" and situo ~= nil and t == "situo" thenlocal strings = mw.text.split(situo, "///", plain)local n = 1      -- nombro de tiaj parametroj en artikolofor k, v in pairs(strings) dolocal situoinformo = argumentoj(args,a2 .. "_" .. v)if situoinformo ~= "" and situoinformo ~= nil thenif n == 1 thensituo2 = situo2 .. situoinformoelsesituo2 = situo2 .. ", " .. situoinformoendn = n + 1endendend-- se parametro estas en la artikoloif param ~= "" and param ~= nil thenparamalt = paramif t == "numero" or t == "loĝantaro" then       -- se estas numero aŭ nombro de loĝantoj, laŭ la subŝablona tabelo, tiam formatigu tiellocal n = tonumber(param)if n ~= nil thenparam = formatnum(param) elsenenumero = true -- aktivigas zorgigan kategorionendendif a2a ~= "" and a2a ~= nil thenif t == "loĝantaro" thenparam = param .. " <small>(" .. a2a .. ")</small>"elseif t ~= "situo" thenif v["prefikso"] ~= "" and v["prefikso"] ~= nil thena2a = v["prefikso"] .. a2aendparam = param .. " (" .. a2a .. ")"endendif situo2 ~= "" thenparam = param .. ", " .. situo2endparam = notaldono(notovaloro,param, a2)param = refaldono(referencovaloro,param, referenconomo, referenconomodua)if pri ~= "" and pri ~= nil thenlocal trajto = argumentoj(args,a2)local faldo = argumentoj(args,a2)-- varianto kun la parametro "trajto por libera"if prialt == "?" and t == "teksto" and trajto == "ĉelo" thenlocal k = v["aldono3"]aldonulinion(pri,"","","", montrilo)kesteroj(paramalt, trajto, k)-- por faldado, se estas multe da informojelseif t == "teksto" and (faldo == "jes" or faldo == "1") thenlocal 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)elsealdonulinion(pri,param, "", "", montrilo)endelsealdonuchelon(param, "", "", montrilo)endelse-- ĉu vikidatuma ero ekzistaslocal wd, referencovaloro = wdparam(pk,wdid,referencovaloro)if wd ~= "" and wd ~= nil thenlocal ligilo = wdlink (wdid, pk) or ""if t == "numero" or t == "loĝantaro" thenwd = formatnum(wd) or wdelseif t == "ligilo" thenpri = "En TTT"  -- kiel en ekz. {{Informkesto urbo}}wd = url(wd,"Oficiala retejo")  -- voku la helpan ŝablononelseif t == "teksto" then-- forĵeti strangaĵon el Vikidatumoif wd == "nekonata valoro" thenwd = "?"endendwd = notaldono(notovaloro,wd, a2)wd = refaldono(referencovaloro,wd, referenconomo, referenconomodua)wd = wd .. ligiloif 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 thenwda2 = wikidata.claim({args={pk,qualifier=pk2,id=wdid} })elsewda2 =  wikidata.claim({args={pk,qualifier=pk2} })endif wda2 ~= "" and wda2 ~= nil then-- forigi K.E. el la teksto, sed ankaŭ la antaŭa spaco estu forigitawda2 = mw.ustring.gsub( wda2, " K%.E%.", "")wd = wd .. " <small>(" .. wda2 .. ")</small>"end-- fino de la verukoelseif a2a ~= "" and a2a ~= nil thenwd = wd .. " (" .. a2a .. ")"endend-- wd = notaldono(noto,par, wd, args,a2,pk,wdid)if pri ~= "" and pri ~= nil thenaldonulinion(pri,wd,"jes", "",montrilo)elsealdonuchelon(wd,"", "jes", montrilo)endelse-- varianto kun "laŭ" ktp.local lauc1, lauc2, pk = lauparam(args,a2,wdid)    -- por kodoif lauc1 ~= "" and lauc1 ~= nil and lauc2 ~= "" and lauc2 ~= nil thenlocal ligilo = wdlink(wdid,pk) or ""lauc2 = lauc2 .. ligiloaldonulinion(lauc1,lauc2,"jes", "", montrilo)endendendelseif t == "teksto1" or t == "ligilo1" then---------------- TEKSTO1 - do unuĉela teksto kun priskribo --------------------------------------------------------------------------- komuna parto kun priskribolocal p = pri or ""if p ~= "" thenp = "<b>" .. p .. "</b>: "endlocal p2 = ""local ligilo = ""local jes = ""-- se parametro estas en artikoloif param ~= "" and param ~= nil thenp2 = p .. paramelse-- ĉu estas vikidatuma erolocal wd, referencovaloro = wdparam(pk,wdid,referencovaloro)if wd ~="" and wd ~= nil thenligilo = wdlink (wdid, pk) or ""if t == "ligilo1" thenp = "<b>En TTT</b>: "  -- kiel en ekz. {{Informkesto urbo}}wd = url(wd,"Oficiala retejo")  -- voku la helpan ŝablononendp2 = p .. wdjes = "jes"endend-- eldonoif p2 ~= "" thenp2 = notaldono(notovaloro,p2)p2 = refaldono(referencovaloro,p2, referenconomo, referenconomodua)p2 = p2 .. ligilo-- tio ebligu malaperigon, se la rilata Vikidatuma ero subite enhavas malaktualan informonif param ~= "neniu" and param ~= "ne" thenaldonuchelon(p2,"",jes, montrilo)endendelseif t == "portalo" then---------------- PORTALO - rilata portalo -------------------------------------------------------------------------if param ~= "" and param ~= nil thenlocal bildo = "[[Dosiero:Portal.svg|15px]]"param = "&nbsp;<b>[[Portalo:" .. param .. "|" .. param .. "]]</b>"local p2 = bildo .. paramaldonuchelon(p2, "", "", montrilo)endelseif t == "komunejo" then---------------- KOMUNEJO - rilata kategorio en la Komunejo --------------------------------------------------------------------------- komuna parto local bildo = "[[Dosiero:Commons-logo.svg|15px]]"local p = pri or ""if p ~= "" thenp = "<b>" .. p .. "</b>: "endlocal p2 = ""local ligilo = ""local jes = ""if param ~= "" and param ~= nil thenparam = "&nbsp;<b>[[:commons:Category:" .. param .. "|" .. param .. "]]</b>"p2 = bildo .. p .. paramelse-- ĉu vikidatuma ero estaslocal wd = wdparam(pk,wdid)if wd ~= "" and wd ~= nil thenwd = "&nbsp;<b>[[:commons:Category:" .. wd .. "|" .. wd .. "]]</b>"p2 = bildo .. p .. wdligilo = wdlink (wdid, pk) or ""jes = "jes"endend-- eldonoif p2 ~= "" thenp2 = p2 .. ligiloaldonuchelon(p2,"",jes, montrilo)endelseif 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) thenlocal paramA = param   -- konservu "param" por pli posta analizoparam = param or wdlocal a1a = argumentoj(args,a1) or argumentoj(args,a1_a)if a1a ~= "" and a1a ~= nil thenpri = a1aendlocal a2a = argumentoj(args,a2) or argumentoj(args,a2_a)if a2a ~= "" and a2a ~= nil thenif p2 ~= "" and p2 ~= nil thena2a = p2 .. a2aendparam = notaldono(notovaloro,param, a2)param = refaldono(referencovaloro,param, referenconomo, referenconomodua)param = param .. " (" .. a2a .. ")"endif (paramA == "" or paramA == nil) and wd ~= "" and wd ~= nil thenwd = "jes"local ligilo = wdlink (wdid, pk) or ""param = param .. ligiloendaldonulinion(pri,param,wd, "", montrilo)if param2 ~= "" and param2 ~= nil thenlocal a3a = argumentoj(args,a3) or argumentoj(args,a3_a)if a3a ~= "" and a3a ~= nil thenpri2 = a3aendlocal a4a = argumentoj(args,a4) or argumentoj(args,a4_a)if a4a ~= "" and a4a ~= nil thenif p4 ~= "" and p4 ~= nil thena4a = p4 .. a4aendparam2 = param2 .. " (" .. a4a .. ")"end-- wd estu poste aldonatawd = nilaldonulinion(pri2, param2,wd, "",montrilo)endendelseif t == "-teksto" then-----------------TEKSTO, KIU APERAS MALDEKSTRE SEN DEKSTRAJ DATOJ ------------------------------------------------------------------- la strio aperu nur, se unu el la grupaj parametroj estas uzataif grupanoj ~= "" and grupanoj ~= nil thenlocal nombro = #grupanoj-- la disiga signaro estas ///local string = mw.text.split(grupanoj, "///", true)-- helpa parametro por eviti pli ol unu strionlocal n = 1for k, v in pairs(string) dolocal testo = argumentoj(args,v)if testo ~= "" and testo ~= nil and n == 1 thenlocal c1 = priif a1 ~= "" and a1 ~= nil thenc1a = argumentoj(args,a1) or argumentoj(args,a1_a)if c1a ~= "" and c1a ~= nil thenc1 = c1aendendaldonulinion(c1,"","","", montrilo)n = n +1endendendelseif t == "listo" then---------------- LISTO ---------------------------------------------------------------------------------------------------------------- Listecaj parametrojif param ~= "" and param ~= nil thenlocal c1 = prilocal f = false   -- ne pluralolocal div = false-- neniu faldadolocal nombro = 15if listeroj ~= "" and listeroj ~= nil thenlocal l = tonumber(listeroj)if l ~= nil thennombro = lendendlocal n = 1local chuflagoif a3 ~= "" and a3 ~= nil thenchuflago=argumentoj(args,a3)endif chuflago ~= "" and chuflago ~= nil thenparam = 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" thenparam = "[[" .. param .. "]]"endif v["prefikso"] ~= "" and v["prefikso"] ~= nil and a2 ~= "" and a2 ~= nil thenlocal a2a = argumentoj(args,a2)if a2a ~= "" and a2a ~= nil thena2a = v["prefikso"] .. a2aparam = param .. " (" .. a2a .. ")"endendparam = notaldono(notovaloro,param)param = refaldono(referencovaloro,param, referenconomo, referenconomodua)for i=1, nombro dolocal c2 = argumentoj(args,"" .. v["parametro"] .. i) or ""-- local c2 = args["" .. v["parametro"] .. i] or ""if c2 ~= "" and c2 ~= nil thenif chuflago ~= "" and chuflago ~= nil thenc2 = flago(c2)else-- analizo, ĉu jam estas ligilo en la listero. se ne, aldonu ĝin.local testo = ligiloj._chuligilo2(c2)if testo == "ligu" thenc2 = "[[" .. c2 .. "]]"endendlocal noto2 if noto == "_noto" thennoto2 = par .. i .. notoelseif noto == "noto por " thennoto2 = noto .. par .. iendlocal notovaloro = argumentoj(args,noto2)local referenco2, referenco2a, referenco2bif referenco == "_referenco" thenreferenco2 = par .. i .. referencoreferenco2a = referenco2 .. "_nomo"referenco2b = referenco2 .. "_nomo-dua"elseif referenco == "referenco por " thenreferenco2 =  referenco .. par .. ireferenco2a = referenco2 .. "-nomo"referenco2b = referenco2 .. "-nomo-dua"endlocal 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 .. ";;;" .. c2f = truen = n + 1endendif n > 1 thenlocal chufaldi = argumentoj(args,a2)local chufaldiN = tonumber(chufaldi)if chufaldiN == 1 or chufaldi == "faldo" thenparam = n .. ";;;" .. paramdiv = trueendendif f == true and pri2 ~= "" and pri2 ~= nil thenc1 = pri2endif a1 ~= "" and a1 ~= nil then-- c1 = argumentoj(args, a1)local c1a = argumentoj(args, "" .. a1)-- local c1a = args["" .. a1]if c1a ~= "" and c1a ~= nil thenc1 = c1aendendlocal c2if div == true thenc2 = 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)endaldonulinion(c1,c2,"", "",montrilo)elselocal wdif wdid ~= "" and wdid ~= nil thenwd = wikidata.claim({args={pk,list=";;;",id=wdid} })elsewd = wikidata.claim({args={pk,list=";;;"} })endif wd ~= "" and wd ~= nil thenlocal nombro = listoj._count(";;;",wd)local chufaldi = argumentoj(args,a2)local chufaldiN = tonumber(chufaldi)local ligilo = wdlink (wdid,pk) or ""local c2if chufaldiN == 1 or chufaldi == "faldo" thenwd = nombro .. ligilo .. ";;;" .. wdc2 = listoj._list(";;;",wd,"jes","faldebla","","jes")elsewd = wd .. ligilo-- (delimiter, text, x, mode, sep, w, kind, spaces, spaces1, spaces2)c2 = listoj._list(";;;",wd,"jes","span",",","jes","","",0)endaldonulinion(pri,c2,"jes", "",montrilo)endend-----------  listo2 --------elseif t == "listo2" thenlocal kondicho = argumentoj(args, kon)local def = defaulto -- ĉikaze por la faldadolocal faldo = argumentoj(args,a2)if args['subŝablono'] ~= "jes" and kondicho ~= 'jes' thenif param ~= "" and param ~= nil then-- poste aldonotaelselocal wd if wdid ~= "" and wdid ~= nil thenwd = wikidata.claim({args={pk,parameter="link",list=";;;",id=wdid} })elsewd = wikidata.claim({args={pk,parameter="link",list=";;;"} })endlocal ligilo = wdlink (wdid,pk) or ""if wd ~= nil thenlocal nombro = listoj._count(";;;",wd)nombro = tonumber(nombro)local listeroj = v['listeroj'] or 1000if nombro >= listeroj thenfaldo = "jes"endwd = 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") thenlocal f = kestero(pri,'+',fono,'0')tabelo:wikitext(f)tabelsubtitolo(wd, fono, montrilo)local f2 = kestero('','*')tabelo:wikitext(f2)elsetabelsubtitolo(wd, fono, montrilo)endendendendelseif t == "datoj" then---------------- DATOJ KUN DIVERSAJ TRAJTOJ --------------------------------------------------------------------if param ~= "" and param ~= nil thenlocal r if v["dato"] ~= "" and v["dato"] ~= nil thenlocal param = tonumber(param)local dato = tonumber(v["dato"])local dato2 = tonumber(v["dato2"])if param ~= nil and dato ~= nil thenlocal diferenco = param - datoif param >= dato2  then diferenco = diferenco - 1end r = param .. " (" .. diferenco .. ")"endendif v["ligilo"] ~= "" and v["ligilo"] ~= nil thenr = "[" .. v["ligilo"] .. param .. " " .. param .. "]" endif v["kondicho"] ~= "" and v["kondicho"] ~= nil and v["rezulto"] ~= "" and v["rezulto"] ~= nil thenlocal strings1 = mw.text.split(v["kondicho"], "///", plain)local strings2 = mw.text.split(v["rezulto"], "///", plain)local numero1 = #strings1local numero2 = #strings2if numero1 == numero2 thenfor k, v in pairs(strings1) doif v == param thenr = strings2[k]breakendendif r == "" or r == nil thenr = paramendendendif r ~= "" and r ~= nil thenaldonulinion(pri,r,"", "",montrilo)endendelseif t == "koordinatoj" then---------------- KOORDINATOJ ------------------------------------------------------------------------------------if a1 ~= "" and a1 ~= nil thenlocal latitudo, longitudo = koordargumentoj(args, a1)local latitudo2, longitudo2local gl = argumentoj(args,globo) -- por malofte uzata parametro "globe"if a1 == "situo" thenlatitudo2 = argumentoj(args,"latitudo")longitudo2 = argumentoj(args,"longitudo")elselatitudo2 = argumentoj(args, a1 .. "_latitudo")   -- la parametra varianto kun spaco estas ebligata de la vokata funkciolongitudo2 = argumentoj(args,a1 .. "_longitudo")  -- la parametra varianto kun spaco estas ebligata de la vokata funkcioendlocal regiono1, tipo1 = koordtipo(argumentoj(args, a2))   -- kodo por {{Geokesto}} aŭ simila ŝablonolocal regiono = argumentoj(args, iso) or argumentoj(args,"regiono-ISO") or regiono1local ligiltipo    = argumentoj(args,"type") or tipo1 if ktipo ~= "" and ktipo ~= nil and (ligiltipo == "" or ligiltipo == nil) thenligiltipo = ktipoelseif ligiltipo == "" or ligiltipo == nil thenif tipo ~= "" and tipo ~= nil thenligiltipo = type_atributo.type_atributo(tipo)elseligiltipo = "landmark"endendlocal nomo    = argumentoj(args,"nomo") or argumentoj(args,"titolo") or paghenamebase ()local c1local kond = argumentoj(args,kon) -- ĉu kondiĉo?if pri ~= "" and pri ~= nil and (kond == "" or kond == nil) thenc1 = prielseif kond ~= "" and kond ~= nil thenc1 = " - koordinatoj"elsec1 = "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' thensupre = "/"endlocal koordkasho = argumentoj(args,koordkasho) or ""if v["supre"] == "ne" or (koordkasho ~= "" and kashvaloro ~= "" and koordkasho == kashvaloro) or args['subŝablono'] == "jes" thensupre = ""end-- formatojlocal tekstoif v["formato"] ~= "" and v["formato"] ~= nil thenteksto = argumentoj(args,v["formato"])if teksto ~= "" and teksto ~= nil thenteksto = mw.ustring.lower(teksto)if teksto == "dms" or teksto == "gms" thenteksto = "dms"elseif teksto == "dec" or teksto == "dek" thenteksto = "dec"else-- defaŭlta valoro, se uzanto provas difini sensencan valoronteksto = "dms"endendendif (latitudo ~= "" and latitudo ~= nil and longitudo ~= "" and longitudo ~= nil) or (latitudo2 ~= "" and latitudo2 ~= nil and longitudo2 ~= "" and longitudo2 ~= nil) thenlatitudo = latitudo or latitudo2 longitudo = longitudo or longitudo2 local k = koordinatoj(latitudo, longitudo, regiono, ligiltipo, nomo, supre, teksto, gl)if k ~= "" and k ~= nil thenif a3 ~= "" and a3 ~= nil thenlocal n = argumentoj(args,a3)-- transprenas la valoron el la ŝablonoif n ~= nil thenk = k .. n-- aldonas notonendendaldonulinion(c1,k,"","",montrilo)endelselocal wdlatitudo, wdlongitudo-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625local metukoordinatojn = false-- rigardas, ĉu la difinita valoro de tipo estas en la kondiĉa listo aŭ neif v['pkondicho'] ~= "" and v['pkondicho'] ~= nil thenlocal kondicho = v['pkondicho']local strings = mw.text.split(kondicho, "///", plain)for k, v in pairs(strings) doif v == tipo thenmetukoordinatojn = truebreakendendendif shablono == "Informkesto urbo" or metukoordinatojn or pk == "P610" or pk == "P1589" then-- local wdid = argumentoj(args, 'wd-id')if wdid ~= "" and wdid ~= nil then-- aldono por kombino el numera identigilo kaj rilataj koordinatojif pk == "P610" thenwdlatitudo = wikidataGeo._plejaltalat(wdid)wdlongitudo = wikidataGeo._plejaltalong(wdid)elseif pk == "P1589" thenwdlatitudo = wikidataGeo._plejmalaltalat(wdid)wdlongitudo = wikidataGeo._plejmalaltalong(wdid)elsewdlatitudo = wikidataGeo._latitudo(wdid)wdlongitudo = wikidataGeo._longitudo(wdid)endelse-- aldono por kombino el numera identigilo kaj rilataj koordinatojif pk == "P610" thenwdlatitudo = wikidataGeo._plejaltalat()wdlongitudo = wikidataGeo._plejaltalong()elseif pk == "P1589"  thenwdlatitudo = wikidataGeo._plejmalaltalat()wdlongitudo = wikidataGeo._plejmalaltalong()elsewdlatitudo = wikidataGeo._latitudo()wdlongitudo = wikidataGeo._longitudo()endendendif wdlatitudo ~="" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil thenlocal k = koordinatoj(wdlatitudo, wdlongitudo, regiono, ligiltipo, nomo, supre, teksto, gl)local neniukoordinato = argumentoj(args,"neniukoordinato")if k ~= "" and k ~= nil and neniukoordinato ~= "jes" thenif a3 ~= "" and a3 ~= nil thenlocal n = argumentoj(args,a3)-- transprenas la valoron el la ŝablonoif n ~= nil thenk = k .. n-- aldonas notonendendlocal ligilo = wdlink (wdid, "P625") or ""k = k .. ligiloaldonulinion(c1,k,"jes", "",montrilo)endendendend -- a1elseif t == "mapo" then---------------- MAPO KUN MARKILO --------------------------------------------------------------------------------------------------------------------------------- mapo(mapo,aliamapo,mapofono,lat,lon,markocelo,tipo,priskribo,neniukoordinato)local isomapolocal mapnumero = v["mapnumero"]if args['uzuiso'] == "jes" and mapnumero ~= "dua" thenisomapo = isomapilo(args['regiono-ISO'])endif v['shanghebla'] ~= "" and v['shanghebla'] ~= nil then-- testo, ĉu ŝanĝebla mapo estas difinitalocal 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 = nilisomapo = nilendendif v['kashu'] ~="" and v['kashu'] ~= nil then-- testo, ĉu ŝanĝebla mapo estas difinitalocal 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 = nilisomapo = nilendendif (param ~= "" and param ~= nil) or isomapo then local param_old = param -- por pli posta testoif shablono ~= 'Informkesto urbo' thenparam_old = ''endparam = param or isomapoif param == "iso" thenparam = isomapilo(args['regiono-ISO'])endlocal latitudo = argumentoj(args,"latitudo")local longitudo = argumentoj(args,"longitudo")local latitudo2, longitudo2 = koordargumentoj(args, "situo")local latitudo3, longitudo3local latitudo4, longitudo4local koord1 = v['koord1']local koord2 = v['koord2']if koord1 ~= "" and koord1 ~= nil thenlatitudo3, longitudo3 = koordargumentoj(args, koord1)endif koord2 ~= "" and koord2 ~= nil thenlatitudo4, longitudo4 = koordargumentoj(args, koord2)endlocal 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) thenpri = "Situo de " .. titoloend 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 thenregiono1, tipo1 = koordtipo(argumentoj(args, t))   -- kodo por {{Geokesto}} aŭ simila ŝablonoregiono = argumentoj(args,"regiono-ISO") or regiono1tipo2    = argumentoj(args,"type") or tipo1 elseregiono = argumentoj(args,"regiono-ISO") tipo2    = argumentoj(args,"type") endif ktipo ~= "" and ktipo ~= nil and (tipo2 == "" or tipo2 == nil) thentipo2 = ktipoelseif tipo2 == "" or tipo2 == nil thenif tipo ~= "" and tipo ~= nil thentipo2 = type_atributo.type_atributo(tipo)elsetipo2 = "landmark"endend-- aktivigo de kelkaj pliaj parametroj por la unua mapo kun markilolocal angulo = ""if mapnumero ~= "dua" thenangulo ="jes"endlocal chumontaro = argumentoj(args,'montar-markilo')if tipo == "montaro" and chumontaro ~= "jes" thenneniukoordinato = "jes"montru="ne"endlocal marko=argumentoj(args,'marko') local markospeco=argumentoj(args,'markospeco')local markogrando = 8local mg = argumentoj(args,'marko-ampl')if mg ~= nil and mg ~= "" thenlocal test = tonumber(mg)if test ~= nil thenmarkogrando = mgelsemg = ""endend-- ne estas kombinebla kun la antaŭa if-blokoif mg == "" or mg == nil thenif tipo == "tertremo" or tipo == "lumturo" thenmarkogrando = 25-- laŭ la specifa ŝablono "Informkesto arkeologia situo"elseif tipo == "arkeologia situo" thenmarkogrando = 12endendif (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' thenlocal m = situomapo(param,a1,a2,latitudo,longitudo,a4,tipo,pri,neniukoordinato,a3,regiono,tipo2,"ne",angulo,args,marko,markospeco,markogrando,titolo)aldonuchelon(m) endelselocal wdlatitudo, wdlongitudo-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625if shablono == "Informkesto urbo"  or submodulo == "urbo" or shablono == "Informkesto geografiaĵo" then-- local wdid = argumentoj(args, 'wd-id')if wdid ~= "" and wdid ~= nil thenwdlatitudo = wikidataGeo._latitudo(wdid)wdlongitudo = wikidataGeo._longitudo(wdid)elsewdlatitudo = wikidataGeo._latitudo()wdlongitudo = wikidataGeo._longitudo()endendif wdlatitudo ~= "" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil thenif param_old ~= 'neniu' thenlocal 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")   endendendelse -- lokumilo forestas if a1 ~= "" and a1 ~= nil then          -- ĉu en la difina tabelo enestas io uzebla? a1a = argumentoj(args,a1)-- transpreno el la ŝablonoif 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 thena3 = argumentoj(args, a3)endlocal mif a3 == "ŝablono" thenm = bildoj.InfoboxImage({args={image=a1a,size=grando,sizedefault="120px",center="yes", alt=pri2} })if pri2 ~= "" and pri2 ~= nil thenm = m .. '<div>' .. pri2 .. '</div>'endelsem = situomaposenmarko(a1a,pri2,a2,tipoj[1])endaldonuchelon(m)end endendelseif t == "mapo2" then---------------- KOMUTEBLAJ MAPOJ -----------------------------------------------------------------------------------------------------------------if param ~= "" and param ~= nil thenlocal latitudo = argumentoj(args,"latitudo")local longitudo = argumentoj(args,"longitudo")local latitudo2, longitudo2 = koordargumentoj(args, "situo")local latitudo3, longitudo3local latitudo4, longitudo4local koord1 = v['koord1']local koord2 = v['koord2']if koord1 ~= "" and koord1 ~= nil thenlatitudo3, longitudo3 = koordargumentoj(args, koord1)endif koord2 ~= "" and koord2 ~= nil thenlatitudo4, longitudo4 = koordargumentoj(args, koord2)endlocal t = v['koordtipo']local regiono1, tipo1, regiono, ligiltipoif t ~= "" and t ~= nil thenregiono1, tipo1 = koordtipo(argumentoj(args, t))   -- kodo por {{Geokesto}} aŭ simila ŝablonoregiono = argumentoj(args,"regiono-ISO") or regiono1ligiltipo    = argumentoj(args,"type") or tipo1 elseregiono = argumentoj(args,"regiono-ISO") ligiltipo    = argumentoj(args,"type") endif ktipo ~= "" and ktipo ~= nil and (ligiltipo == "" or ligiltipo == nil) thenligiltipo = ktipoelseif ligiltipo == "" or ligiltipo == nil thenif tipo ~="" and tipo ~= nil thenligiltipo = type_atributo.type_atributo(tipo)elseligiltipo = "landmark"endend-- local nomo = local marko=argumentoj(args,'marko') local markospeco=argumentoj(args,'markospeco')local mapotipo=argumentoj(args,'tipo')     -- unua mapolocal 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 mapolocal 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 mapolocal 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 mapolocal 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 latitudo4longitudo = longitudo or longitudo2 or longitudo3 or longitudo4local 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)elselocal wdlatitudo, wdlongitudo-- trajto por kelkaj ŝablonoj, kiuj jam subtenu la koordinatojn el Vikidatuma ero P625if shablono == "Informkesto urbo"  or submodulo == "urbo" or shablono == "Informkesto geografiaĵo" then-- local wdid = argumentoj(args, 'wd-id')if wdid ~= "" and wdid ~= nil thenwdlatitudo = wikidataGeo._latitudo(wdid)wdlongitudo = wikidataGeo._longitudo(wdid)elsewdlatitudo = wikidataGeo._latitudo()wdlongitudo = wikidataGeo._longitudo()endendif wdlatitudo ~= "" and wdlatitudo ~= nil and wdlongitudo ~= "" and wdlongitudo ~= nil thenlocal 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")   endendendelseif 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.mapligiloif type(mapo_listo) == "table" thenfor k, v2 in pairs(mapo_listo) dolocal temo2, grupo, kondicho, defzomoif type(v2) == 'table' thentemo2 = 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 devigaif kondicho == 'jes' and param ~= kondicho thentemo2 = ""endif temo2 == tipo thenlocal id, nomo, m, zomo, komuneja_mapolocal 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. artikolonomo = titolozomo = argumentoj(args, z) or defzomokomuneja_mapo = argumentoj(args,kom)if grupo == '3' thenlocal 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 funkciolocal longitudo1 = argumentoj(args, koord1 .. "_longitudo")  -- la parametra varianto kun spaco estas ebligata de la vokata funkciolocal latitudo2 = argumentoj(args, koord2 .. "_latitudo")   -- la parametra varianto kun spaco estas ebligata de la vokata funkciolocal longitudo2 = argumentoj(args, koord2 .. "_longitudo")  -- la parametra varianto kun spaco estas ebligata de la vokata funkcioif koord1 ~= "" and koord1 ~= nil then-- prenu la koordinatojn por la fontolat1, long1 = koordargumentoj(args, koord1)endif koord2 ~= "" and koord2 ~= nil then-- prenu la koordinatojn por la enfluejolat2, long2 = koordargumentoj(args, koord2)endif (lat1 ~= nil and long1 ~= nil and lat2 ~= nil and long2 ~= nil) or (latitudo1 ~= nil and longitudo1 ~= nil and latitudo2 ~= nil and longitudo2 ~= nil) thenlat1 = lat1 or latitudo1long1 = long1 or longitudo1lat2 = lat2 or latitudo2long2 = long2 or longitudo2m = mapligilo(komuneja_mapo, nomo, zomo, lat1, long1, lat2, long2, tipo, wdid)endelseif grupo == '2' or grupo == '1' thenlocal latitudo = argumentoj(args,"latitudo")local longitudo = argumentoj(args,"longitudo")local latitudo2, longitudo2, koordif grupo == '2' thenlatitudo2, longitudo2 = koordargumentoj(args, "situo")koord = v['koord1']elseif grupo == '1' thenlatitudo2, longitudo2 = koordargumentoj(args, "ĉefurbo")koord = v['koord4']endlocal lat, longif koord ~= "" and koord ~= nil then-- prenu la koordinatojn por la situo de la lagolat, long = koordargumentoj(args, koord)endif (lat ~= nil and long ~= nil) or (latitudo ~= nil and longitudo ~= nil) or (latitudo2 ~= nil and longitudo2 ~= nil) thenlat = lat or latitudo or latitudo2long = long or longitudo or longitudo2m = mapligilo(komuneja_mapo, nomo, zomo, lat, long, '', '', tipo, wdid)else-- aŭ el la Vikidatuma eroif wdid ~= "" and wdid ~= nil thenlat = wikidataGeo._latitudo(wdid)long = wikidataGeo._longitudo(wdid)elselat = wikidataGeo._latitudo()long = wikidataGeo._longitudo()endif lat ~= nil and long ~= nil thenm = mapligilo(komuneja_mapo, nomo, zomo, lat, long, '', '', tipo, wdid)endendendif m ~= nil thenaldonuchelon(m) aldonuchelon(nomo) endendendendendendelseif t == "alto" or t == "altitudo" or t == "longo" or t == "profundo" or t == "promilo" then---------------- ALTO ----------------------------------------------------------------------------------------------- komuna parto kun priskribolocal c1 = pri or " - alteco"local c2 = ""local ligilo = ""local jes = ""local u = ""-- varianto de priskriba tekstoa1a = argumentoj(args,a1) if a1a ~= "" and a1a ~= nil thenc1 = a1aend-- unuoa2a = argumentoj(args,a2)-- minuskligi ĉionif a2a ~= "" and a2a ~= nil thena2a = mw.ustring.lower(a2a)end-- rondumoa3a = argumentoj(args,a3)local rondumo = 0local testo = tonumber(a3a)if type(testo) == "number" thenrondumo = testoelseif t == "longo" and tipo == "lago" thenrondumo = 2endlocal kond = argumentoj(args,kon)if kond ~= "" and kond ~= nil thenc1 = " - alteco"endlocal unuo = "[[Metro|m]]"if t == "longo" thenunuo = "[[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" thenunuo = "[[Metro|m]]"u = "m"endelseif t == "promilo" thenunuo = "[[Promilo|‰]]"u = "‰"elseif t == "profundo" and tipo == "tertremo"thenunuo = "[[Kilometro|km]]"u = "km"end-- kontrolo, pri kiu unuo temas en transdonita parametroif a2a == "m" or a2a == "km" thenunuo = a2au = a2aendlocal direkto = argumentoj(args,a4) or ""if direkto ~= "" thendirekto = ', ' .. direktoendlocal regiono = argumentoj(args,"regiono-ISO")-- se parametro estas en la artikoloif param ~= "" and param ~= nil thenlocal n = tonumber (param)if n ~= nil thenc2 = n--if regiono ~= "" and regiono ~= nil and unuo == "[[Metro|m]]" thenif regiono ~= "" and regiono ~= nil and t == "altitudo" then-- nur la du unuaj literoj estu uzatajlocal kodo = mw.ustring.sub(regiono,1,2)c2 = alteco(c2,kodo)elsec2 = kalkuli._round(c2,rondumo)c2 = formatnum(n)c2 = c2 .. " " .. unuoif u == "km" thenlocal mi = kalkuli._round(n/1.609344,rondumo)c2 = c2 .. ' (' .. mi .. ' [[mejlo|mi]])'endendelsec2 = paramc2 = mw.ustring.gsub(c2,"%.",",")c2 = c2 .. " " .. unuonenumero=true-- aktivigas zorgigan kategorionendelse--ĉu vikidatuma ero ekzistas--local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)local wd, referencovaloroif wdid ~= "" and wdid ~= nil thenwd, referencovaloro = wikidata.claim({args={pk,qualifier=pk2, id=wdid, references = "raw"} })elsewd, referencovaloro = wikidata.claim({args={pk,qualifier=pk2, references = "raw"} })endif wd ~= "" and wd ~= nil thenligilo = wdlink (wdid, pk)c2 = wdif regiono ~= "" and regiono ~= nil and t == "altitudo" then-- nur la du unuaj literoj estu uzatajlocal kodo = mw.ustring.sub(regiono,1,2)c2 = alteco(c2,kodo)elsec2 = formatnum(wd)c2 = c2 .. " " .. unuoendjes = "jes"endend-- eldono, se ekzistas enhavoif c2 ~= "" thenc2 = c2 .. direktoc2 = notaldono(notovaloro,c2)c2 = refaldono(referencovaloro,c2, referenconomo, referenconomodua)c2 = c2 .. ligiloaldonulinion(c1,c2,jes,"",montrilo)endelseif t == "areo" then---------------- AREO ----------------------------------------------------------------------------------------------- komunuo parto kun priskribolocal c1 = pri or " - areo"-- varianto de priskriba tekstoa1a = argumentoj(args,a1) or argumentoj(args,a1_a)if a1a ~= "" and a1a ~= nil thenc1 = a1aendlocal c2 = ""local c2a = ""local rondumo = 0local ligilo = ""local jes = ""if a3 ~= "" and a3 ~= nil thenrondumo = argumentoj(args,a3) or argumentoj(args,a3_a)local testo = tonumber(rondumo)if testo ~= nil thenrondumo = testoelserondumo = 0endendif param ~= "" and param ~= nil thenlocal areo = tonumber (param)if areo ~= nil thenlocal unuo = argumentoj(args,a2) or argumentoj(args,a2_a) or ""-- ankoraŭfoje ŝanĝenda, por faciligi aldonojnif unuo ~= "" thenif unuo == "m²" or unuo == "m2" thenc2 = areo .. '&nbsp;m²'elsec2 = areoKM2(areo,unuo,x,2) c2a = areoHA(areo,unuo,x,rondumo)c2 = c2 .. " (" .. c2a .. ")"endelselocal testo = areotipo(tipo)if testo == "m2" thenc2 = areo .. '&nbsp;m²'elseif testo == "km2" thenc2 = areoKM2(areo,"km²",x,2) c2a = areoHA(areo,"km²",x,rondumo)c2 = c2 .. " (" .. c2a .. ")"endendlocal procentoj = v['procentoj']    -- por "tera areo" kaj "akva areo" aŭ io tiaif 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)endif procentoj ~= "" and procentoj ~= nil thenc2 = c2 .. " <small>(" .. procentoj .. "%)</small>"endelsec2 = mw.ustring.gsub(param,"%.",",")nenumero=true-- aktivigas zorgigan kategorionendelse-- ĉu vikidatuma ero ekzistaslocal wd, wdunuo = wikidataGeo._areoKM2(wdid,"","","subfunkcio",2)if wd ~= "" and wd ~= nil and wd ~= "neniuj valoroj" and pk ~= "" and pk ~= nil thenwd = formatnum(wd) or wdif wdunuo ~= "" and wdunuo ~= nil thenc2 = wd .. " " .. wdunuoelsec2 = wd .. " [[Kvadrata kilometro|km²]]"endlocal wd2, wdunuo2 = wikidataGeo._areoHA(wdid,"","","subfunkcio",rondumo)wd2 = formatnum(wd2) or wd2if wdunuo2 ~= "" and wdunuo2 ~= nil thenc2a = wd2 ..  " " .. wdunuo2elsec2a = wd2 .. " [[Hektaro|ha]]"endif c2a ~= "" and c2a ~= nil thenc2 = c2 .. " (" .. c2a .. ")"endlocal procentoj = v['procentoj']    -- por "tera areo" kaj "akva areo" aŭ io tiaif 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)endif procentoj ~= "" and procentoj ~= nil thenc2 = c2 .. " <small>(" .. procentoj .. "%)</small>"endligilo = wdlink (wdid, pk)jes = "jes"endend-- eldonoif c2 ~= "" thenc2 = notaldono(notovaloro,c2, a2)c2 = refaldono(referencovaloro,c2, referenconomo, referenconomodua)c2 = c2 .. ligiloaldonulinion(c1,c2,jes,"",montrilo)endelseif t == "denso" then---------------- DENSO ----------------------------------------------------------------------if param ~= "" and param ~= nil thenif param == "auto" thenlocal rondumo = 2if a4 ~= "" and a4 ~= nil thenrondumo = argumentoj(args,a4)local testo = tonumber(rondumo)if testo ~= nil thenrondumo = testoelserondumo = 2endendlocal loghantaro = argumentoj(args,a1) or argumentoj(args,a1_a) local areo = argumentoj(args,a2) or argumentoj(args,a2_a) local d     -- por densoif loghantaro ~= "" and loghantaro ~= nil and areo ~= "" and areo ~= nil thenlocal l = tonumber(loghantaro)local a = tonumber(areo)if l ~= nil and a ~= nil thenlocal unuo = argumentoj(args,a3) or ""local a2    -- por transkalkulata areoif unuo ~= "" thena2 = areoKM2(a,unuo,"jes")if a2 ~= "" and a2 ~= nil thend = l/a2endelsea2 = areoKM2(a,"km²","jes")if a2 ~= "" and a2 ~= nil thend = l/a2endendd = kalkuli._round(d, rondumo)d = formatnum(d)   -- formatas numerond = d .. " loĝ./[[Kvadrata kilometro|km²]]"aldonulinion(pri,d,wd,"",montrilo)endelse-- rigardu al la Vikidatumaj erojlocal wdloghantaro = wikidata.claim({args={pk,id=wdid} }) --wdparam(pk,wdid)local wdareo, wdunuo = wikidataGeo._areoKM2(wdid,"","","subfunkcio",rondumo)-- testolocal densoif wdloghantaro ~= "" and wdloghantaro ~= nil and wdareo ~= "" and wdareo ~= nil thenlocal wdloghantaro2 = tonumber(wdloghantaro)local wdareo2 = tonumber(wdareo)if wdloghantaro2 ~= nil and wdareo2 ~= nil thendenso = wdloghantaro2 / wdareo2local rondumo = 2if a4 ~= "" and a4 ~= nil thenrondumo = argumentoj(args,a4)local testo = tonumber(rondumo)if testo ~= nil thenrondumo = testoelserondumo = 2endenddenso = kalkuli._round(denso, rondumo)denso = formatnum(denso)   -- formatas numerondenso = denso .. " loĝ./[[Kvadrata kilometro|km²]]"local ligilo1 = wdlink (wdid, pk)local ligilo2 = wdlink (wdid, pk2)denso = denso .. ligilo1 .. ligilo2wd = "jes"aldonulinion(pri,denso,wd,"",montrilo)endendendelselocal n = mw.ustring.gsub(param, ",", ".") -- tonumber nur ĝuste funkcias, se la esperanta komo estas anstataŭigata per la angla punkto, se necesasn = tonumber(n)if n ~= nil thenn = mw.ustring.gsub(param, "%.", ",")  -- angla punkto estu anstataŭigata per esperanta komon = n .. " loĝ./[[Kvadrata kilometro|km²]]"n = notaldono(notovaloro,n)n = refaldono(referencovaloro,n, referenconomo, referenconomodua)aldonulinion(pri,n,wd,"",montrilo)elseparam = notaldono(notovaloro,param, a2)param = refaldono(referencovaloro,param, referenconomo, referenconomodua)aldonulinion(pri,param,wd,"",montrilo)nenumero=true-- aktivigas zorgigan kategorionendendendelseif t == "trafluo" or t == "volumeno" then---------------- TRAFLUO ---------------------------------------------------------------------if param ~= "" and param ~= nil thenlocal c1 = pri or tlocal unuo if t == "trafluo" thenunuo = "[[Kubmetro|m³]]/[[Sekundo|s]]"elseif t == "volumeno" thenunuo = "[[Kubmetro|m³]]"endlocal unuo1 = argumentoj(args,a2)param = formatnum(param) or paramif unuo1 ~= "" and unuo1 ~= nil thenparam = param .. " " .. unuo1elseparam = param .. " " .. unuoendparam = notaldono(notovaloro,param)param = refaldono(referencovaloro,param, referenconomo, referenconomodua)aldonulinion(c1,param,"","",montrilo)endelseif t == "dato" then----------------- DATO -----------------------------------------------------------------------if param ~= "" and param ~= nil thenlocal c1 = pri or "Dato" local c1a = argumentoj(args, a1) or argumentoj(args, a1_a) or ""if c1a ~= "" thenc1 = c1aend-- testo, ĉu temas pri numero. se jes, supozeble iu transdonis la nuran jaronlocal testo = tonumber(param)if type(testo) == 'number' thenparam = datoj._dato("","",param)elselocal s = anstatau(param, '-', '')local testo = tonumber(s)if type(testo) =='number' thenparam = datoj._dato(param,'','')endendparam = 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 thenparam = prefikso .. " " .. paramendaldonulinion(c1,param,wd,"",montrilo)endelseif t == 'faldokomenco' then--------------------------------------------------------------------if param == 'jes' or param == '1' thenlocal faldo = kestero(pri,'+',fono,'0')tabelo:wikitext(faldo)endelseif t == 'faldofino' then--------------------------------------------------------------------if param == 'jes' or param == '1' thenlocal faldo = kestero('','*')tabelo:wikitext(faldo)endelseif t == 'aldono' then--------------------------------------------------------------------local kondicho = argumentoj(args, kon)if param ~= '' and param ~= nil and kondicho ~= 'jes' thenlocal trajto = argumentoj(args,a1)local k = v["aldono2"]kesteroj(param, trajto, k)end-- loko por pliaj variantojend---------------- FINO DE LA LAŬTIPA ANALIZO --------------------------------------------------------------else-- return '<span class="error">La submodulo verŝajne havas la malgustan strukturon</span>'end-- return k, v--endend-- nestado de interna ŝablonoif args['enhavo'] ~= "" and args['enhavo'] ~= nil then-- tabela strukturo devas esti kreata de la interna ŝablono!tabelo:newline()tabelo:wikitext(args['enhavo'])tabelo:newline()endlocal 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 thenif wybildo ~= "neniu" thenwikivoyage = wybildoendelseif wdid ~= "" and wdid ~= nil thenwikivoyage = wikidata.claim({args={"P948",id=wdid} })elsewikivoyage = wikidata.claim({args={"P948"} })endendtabelo:newline():wikitext(t):newline():done()end-- fino de la tabelor = 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|]]' .. rend-- aldono de zorgigaj kategoriojlocal kat2 = ""local geotipo = ""if shablono == "Informkesto geografiaĵo" thenif tipo ~= "" and tipo ~= nil thenkat2 = "ŝablono Geokesto"-- por ke "malsanulejo" kaj "hospitalo" havu komunan kategorionif tipo == "malsanulejo" thentipo = "hospitalo"elseif tipo == "alta konstruaĵo" thentipo = "konstruaĵo"elseif tipo == "historia regiono" thentipo = "historia teritorio"elseif tipo == "oceano" thentipo = "maro"elseif tipo == "verda spaco" thentipo = "parko"elseif tipo == "protektita tereno" thentipo = "protektita areo"elseif tipo == "restoracio" thentipo = "gastejo"elseif tipo == "zoo" or tipo == "zoologia parko" thentipo = "zoologia ĝardeno"end-- por dua, ne tre ofte uzata dua tipo if tipob == "malsanulejo" thentipob = "hospitalo"elseif tipob == "alta konstruaĵo" thentipob = "konstruaĵo"elseif tipob == "historia regiono" thentipob = "historia teritorio"elseif tipob == "oceano" thentipob = "maro"elseif tipob == "verda spaco" thentipob = "parko"elseif tipob == "protektita tereno" thentipob = "protektita areo"elseif tipob == "restoracio" thentipob = "gastejo"elseif tipob == "zoo" or tipob == "zoologia parko" thentipob = "zoologia ĝardeno"endgeotipo = tipo elsekat1 = ""-- zorgiga kategorior = r .. [[Kategorio:Ŝablono geokesto sen tipo]]endelseifshablono == "Informkesto urbo" thenkat2 = shablonogeotipo = argumentoj(args,"tipo") if geotipo ~= "" and geotipo ~= nil thengeotipo = geotipo else -- defaŭlta valorogeotipo = "urbo"endelsekat1 = ""endif 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 tipoif tipob ~= "" and tipob ~= nil thenlocal kategorio2 = "[[Kategorio:" .. tipob .. kat1 .. kat2 .. "]]"r = r .. kategorio2endif wdref == true thenr = r .. "[[Kategorio:Artikoloj kun referencoj el Vikidatumoj]]"endif artref == true thenr = r .. "[[Kategorio:Artikoloj kun referencoj en informkesto]]"end-- kategorioj por flagoj kaj blazonoj el Vikidatumojlocal 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 thenlocal kategorio2 = "[[Kategorio:Artikoloj kun Vikidatumaj flagoj]]"r = r .. kategorio2endendlocal 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 thenlocal kategorio3 = "[[Kategorio:Artikoloj kun Vikidatumaj blazonoj]]"r = r .. kategorio3endendif nenumero == true thenr = r .. "[[Kategorio:Nenombraj signifoj de nombraj parametroj]]"endendif subshablono thenr = r .. '[[Kategorio:Artikoloj kun nestitaj informkestoj]]'endreturn rendend-- redonu koloron laŭ "tipo"function p._tipkoloro(tipoj,args)local tipo = tipoj[1] or ""if tipo ~= "" thentipo = mw.ustring.lower(tipo)endlocal fono = koloroj.fonkoloro(tipo)return fonoend-- plia testofunction p._testo (tipoj,args)-- antaŭdifino de kelkaj parametroj if args["fono"] == "" or args["fono"] == nil thenargs["fono"] = "#EFEFEF"endargs["submodulo"] = "testado"return p._informkesto(tipoj,args)end-- aliaj informkestojfunction 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'] thenargs["fono"] = "#F9F9F9"elseif args['tipo'] == "vilaĝo" thenargs["fono"] = "#96C8A2"elseargs["fono"] = "#DDFFDD"endendargs["submodulo"] = "urbo"args["ŝablono"] = "Informkesto urbo"args['uzuiso'] = "jes"    -- aktivigas la "tradukilon" por regiono-ISO al maponomoif args['tipo1'] == "" or args['tipo1'] == nil thenargs['tipo1'] ="normala"endif args['tipo2'] == "" or args['tipo2'] == nil thenargs['tipo2'] ="normala"endif args['tipo'] == "" or args['tipo'] == nil thentipoj[1] = "urbo"elsetipoj[1] = args['tipo']endif args['mapligilo'] == "" or args['mapligilo'] == nil thenargs['mapligilo'] ="jes"endif args['denseco'] == "" or args['denseco'] == nil thenargs['denseco'] ="auto"endlocal r = p._informkesto(tipoj,args)if kat1 ~= "" thenlocal 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 thenr = r .. katendendreturn rend--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) doif 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' thennamedArgs[k] = vendendtable.sort(tipoj)for i, v in ipairs(tipoj) dotipoj[i] = args[v]endreturn tipoj, namedArgsend 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 origArgsif frame == mw.getCurrentFrame() thenorigArgs = frame:getParent().argsfor k, v in pairs(frame.args) doorigArgs = frame.argsbreakendelseorigArgs = frameend-- Trim whitespace and remove blank arguments.local args = {}for k, v in pairs(origArgs) doif type(v) == 'string' thenv = mw.text.trim(v)endif v ~= '' thenargs[k] = vendendlocal templateArgs = frame:getParent().argsargs['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.endend local funcNames = {'informkesto', 'testo', 'urbo', 'wdlink', 'tipkoloro'} for _, funcName in ipairs(funcNames) dop[funcName] = makeWrapper('_' .. funcName)endreturn p