Moduuli:läh-pieni
Moduulin läh-pieni käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Käytetään mallineesta läh-pieni käsin.
-- Osien tiedot.
-- [1]:
-- [2]:
-- [3]: julkaisuvuosi
-- [4]: osan ensimmäinen hakusana, jota käytetään tutkittaessa mihin osaan annettu haksusana kuuluu
local osat = {
[1] = { "Ensimmäinen", "A - Isonzo", "1925", "a" },
[2] = { "Toinen", "Isopurje - Maskotti", "1926", "isopurje" },
[3] = { "Kolmas", "Masku - Sanomalehti", "1927", "masku" },
[4] = { "Neljäs", "San Remo - Öölanti", "1928", "sanremo" },
}
-- Palauttaa osan numeron, jossa hakusana `hs` on/olisi.
local function hae_osa_hakusanalle(frame, hs)
for i,r in ipairs(osat) do
local alku = r[4]
if alku == nil or alku > hs:lower() then
return i-1
end
end
return 4
end
-- Parsii osan numeron ja websivun numeron urlista.
local function parsi_url(frame, url, hs)
-- urlin kaksi viimeistä numeroa joiden välissä on /
-- hyväksyttyjä esim.:
-- http://runeberg.org/pieni/2/0020.html
-- 2/0020.html
-- 2/0020
return string.match(url, "/?([0-9]+)/([0-9]+)[^/]*$")
end
-- Muotoilee tekstin.
-- frame ...
-- osa (numero/teksti) osan numero
-- ws (teksti) nelinumeroinen Runebergin käyttämä sivunumero esim. "0020"
-- hs (teksti) hakusana
local function muotoile(frame, osa, wsivu, hs)
-- jos voidaan linkittää suoraan oikealle sivulle
if wsivu then
-- osa+0 muuttaa mahdollisen tekstimuotoisen numeron lukumuotoon
return "Pieni tietosanakirja. " .. osa .. ", " .. osat[osa+0][2] .. " / toim. Jaakko Forsman ... [et al.]. Helsinki: Otava, " .. osat[osa+0][3] .. ": hakusana ''" .. hs .. "'' ([http://runeberg.org/pieni/" .. osa .. "/" .. wsivu .. ".html Project Runebergissa])"
-- muuten linkitetään osan hakemistoon
else
return "Pieni tietosanakirja. " .. osa .. ", " .. osat[osa+0][2] .. " / toim. Jaakko Forsman ... [et al.]. ([http://runeberg.org/pieni/" .. osa .. "/ Project Runebergissa]). Helsinki: Otava, " .. osat[osa+0][3] .. ": hakusana ''" .. hs .. "''"
end
end
local m = {}
function m.Muotoile(frame)
local pframe = frame:getParent()
local url, hs = pframe.args[1], pframe.args[2]
if url == "" then url = nil end
if hs == "" or hs == nul then hs = frame.args[2] end -- pitäisi olla PAGENAME
local osa, wsivu = nil, nil
if url then
osa, wsivu = parsi_url(nil, url, hs)
else
osa = hae_osa_hakusanalle(nil, hs)
end
return muotoile(nil, osa, wsivu, hs);
end
--testi
--local url, hs = "", "Seita"
--print(m.Muotoile{ ['getParent'] = function() return { ['args'] = { [1] = url, [2] = hs } } end })
return m