Modul:Pritoci
Izgled
local utjece = mw.loadData( 'Module:Pritoci/podatci' )
--------------------------------------------------------------------------------
local p = {}
local prikaz = {}
function prikaz.D(x)
return '<span title="desni pritok">⤴ '..x..' </span>'
end
function prikaz.L(x)
return '<span title="lijevi pritok">⤵ '..x..' </span>'
end
function prikaz.U(x) --rijeka se ulijeva u more ili jezero
return '<span title="ulijeva se u">→ '..x..' </span>'
end
function prikaz.O(x) --jezero otječe u rijeku
return '<span title="otječe u">↦ '..x..' </span>'
end
function prikaz.poveznica(voda)
local tekst, nsub = voda:gsub(' %b()', '')
if nsub>0 then
return '[['.. voda .. '|' .. tekst .. ']]'
else
return '[[' .. voda .. ']]'
end
end
function p.tok(x) --tok voda rijeke x
local za_ispis = {}
while utjece[x] do
local smjer, voda = utjece[x][1], utjece[x][2]
local prikaz_smjera = prikaz[ smjer ]
if type(voda)=='string' and type(prikaz_smjera)=='function' then
table.insert(za_ispis, prikaz_smjera( prikaz.poveznica(voda) ))
x = voda
else
break --ili return "[[Kategorija:...]]"
end
end
return table.concat(za_ispis)
end
local function comp(a,b) --za table.sort
local repl = {["Č"]="C~", ["Ć"]="C~~", ["Đ"]="D~", ["Š"]="S~", ["Ž"]="Z~",
["č"]="c~", ["ć"]="c~~", ["đ"]="d~", ["š"]="s~", ["ž"]="z~",
}
return mw.ustring.gsub(a, "[ČĆĐŠŽčćđšž]", repl) < mw.ustring.gsub(b, "[ČĆĐŠŽčćđšž]", repl)
end
function p.pritoci(x) --svi pritoci dane rijeke pronađeni u 'bazi' Modul:Pritoci/podatci
local nadjeni_pritoci = {}
for k, v in pairs(utjece) do
if v[2] == x then
table.insert( nadjeni_pritoci, prikaz.poveznica(k) )
end
end
table.sort(nadjeni_pritoci, comp)
return table.concat(nadjeni_pritoci, " · ")
end
function p.Tok(frame) --za pozivanje iz predložaka
voda = frame.args[1] or frame:getParent().args[1] or ""
return p.tok(voda)
end
function p.Pritoci(frame) --za pozivanje iz predložaka
voda = frame.args[1] or frame:getParent().args[1] or ""
return p.pritoci(voda)
end
function p.svi_podatci() --pomoćna funkcija, ispisuje sve rijeke/vode iz 'baze' Modul:Pritoci/podatci
local abecedno = {}
for k, _ in pairs(utjece) do
--slijedi računski skupa operacija, zaustavlja se nakon 500 pretraga pa ju je bolje ne koristiti
--if not mw.title.new(k).exists then mw.log( "[["..k.."]]" ) end
--zato:
table.insert(abecedno, "[[" .. k .. "]]")
end
table.sort(abecedno, comp)
return table.concat(abecedno, " · ")
end
return p