Moduuli:läh-raam

Wikisanakirjasta

Käytetään mallineesta läh-raam käsin.


-- Parsii käännösvuoden ja kohdan urlista.
-- Hyväksyttyjä `urleja` esim.:
--  http://www.evl.fi/raamattu/1933,38/1Kun.15.html
--  1933,38/1Kun.15.html
--  1933,38/1Kun.15
-- Palauttaa: 
--   käännösvuoden (joko "1933,38" tai "1992")
--   kirjan, esim. "1Kun"
--   jakeen? esim. "15"
local function parsi_url(url)
    return string.match(url, "/?([0-9,]+)/([0-9]*)(.-)\.([0-9]+)[^/]-#?[vo]?([0-9]*)$")
end


local function muotoile_url(v, n, k, o, ja, jl)
    if ja ~= "" then ja = "#" .. ja end
    return "http://www.evl.fi/raamattu/" .. v .. "/" .. n .. k .. "." .. o .. ".html" .. ja
end

-- Muotoilee viittauksen tekstin.
--  v:  joko "1933,38" tai "1992"
--  n:  mahdollinen kirjaa edeltävä numero 
--  k:  kirjan nimi
--  o:  osa??
--  ja: jakeen alku
--  jl: jakeen loppu tai nul
local function muotoile_viittaus(v, n, k, o, ja, jl)
    if n ~= "" then n = n .. ". " end
    if ja ~= "" then ja = ":" .. ja end
    if jl then ja = ja .. "–" .. jl end
    return n .. k .. ". " .. o .. ja
end

-- Muotoilee pitkän viittauksen, esim.:
--   Raamattu, vuosien 1933 ja 1938 suomennos: Laul.l. 2 (verkkoversio)
-- Parametrit:
--   url: esim. http://www.evl.fi/raamattu/1992/2Aik.8.html#11
--   jj (valinnainen): jae, esim. "3" tai jaeväli, esim. "3–4" tai "3-4". Jos annettu, jyrää urlin #-osassa annetun.
local function pitka(url, jj)
    local v, n, k, o, ja = parsi_url(url)
    local suom, jl = nil, nil

    -- erotellaan jaevälin alku ja loppu
    if jj then ja, jl = string.match(jj, "(%d+)[-–]?(%d*)") end
    if jl == "" then jl = nil end

    if v == "1933,38" then
	suom = "vuosien 1933 ja 1938 suomennos"
    elseif v == "1992" then
	suom = "vuoden 1992 suomennos"
    else
	suom = "???"
    end

    return "Raamattu, " .. suom .. ": " .. muotoile_viittaus(v, n, k, o, ja, jl) .. " ([" .. muotoile_url(v, n, k, o, ja, jl) .. " verkkoversio])"
end


-- Muotoilee lyhyen viitteen, esim. 2. Aik. 8:11–12 (KR 1992).
-- Parametrit:
--   url: esim. http://www.evl.fi/raamattu/1992/2Aik.8.html#11
--   jj (valinnainen): jae, esim. "3" tai jaeväli, esim. "3–4" tai "3-4". Jos annettu, jyrää urlin #-osassa annetun.
local function lyhyt(url, jj)
    local v, n, k, o, ja = parsi_url(url)
    local suom, jl = nil, nil
 
    -- erotellaan jaevälin alku ja loppu
    if jj then ja, jl = mw.ustring.match(jj, "(%d+)[-–]?(%d*)") end
    if jl == "" then jl = nil end

    if v == "1933,38" then
	suom = "KR 1933/38"
    elseif v == "1992" then
	suom = "KR 1992"
    else
	suom = "???"
    end

    return "([" .. muotoile_url(v, n, k, o, ja, jl) .. " " .. muotoile_viittaus(v, n, k, o, ja, jl) .. " (" .. suom .. ")])"
end

local m = {}
function m.Muotoile(frame)
    local pframe = frame:getParent()
    if pframe.args.pitka then
	return pitka(pframe.args[1], pframe.args[2])
    else
	return lyhyt(pframe.args[1], pframe.args[2])
    end
end

--testi
--local url, jae = "http://www.evl.fi/raamattu/1992/1Kun.15.html", "3"
--print(m.Muotoile{ ['getParent'] = function() return { ['args'] = { [1] = url, [2] = jae } } end })

return m