Moduuli:hello
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:hello/ohje
local kielet = require("Module:kielikoodit")
local m = {}
local YLA = "";
local KESKI = "{{keski}}"
local ALA = "";
local VIKA = "SEURAAVISSA KÄÄNNÖKSISSÄ ON VIKAA[[Luokka:Käännökset tarkistettava]]<br/>"
local function avaa(key)
m = string.match(key, "{{(%w+)}}")
if m then return kielet.nimi(m) end
return key
end
local function kieliosa(nimi)
tunnus = kielet.tunnus(nimi)
if tunnus then
return "{{" .. tunnus .. "}}"
else
return nimi
end
end
local function tulosta(rivit, oudot)
local ulos = ''
local m = 0; iv = 1
local function print(t) ulos = ulos .. t end
local function println(t) ulos = ulos .. t .. '\n' end
local function comp(a, b) return a.k < b.k end
table.sort(rivit, comp)
--println(YLA)
for i = 1, #rivit do
println("*" .. kieliosa(rivit[i].k) .. ": " .. rivit[i].v)
m = m + rivit[i].m
if m >= (yht / 2) then iv = i; break end
end
println(KESKI)
for i = iv+1, (#rivit-1) do
println("*" .. kieliosa(rivit[i].k) .. ": " .. rivit[i].v)
end
-- ei rivinvaihtoa viimeiseen muuten tulee tyhjä väli
print("*" .. kieliosa(rivit[#rivit].k) .. ": " .. rivit[#rivit].v)
if #oudot > 0 then
println(VIKA)
end
for i = 1, #oudot do
println('*' .. oudot[i])
end
--print(ALA)
return ulos
end
-- Parsii tekstin teksti ja palauttaa sen järjestettynä ja {{keski}}-mallineella varustettuna.
local function parsi(teksti)
local rivit = {}
local oudot = {}
local i = 0; yht = 0
-- Käydään läpi rivi kerrallaan.
for r in string.gmatch(teksti, "([^\n]*)\n") do
-- Yritetään jakaa rivi kaksoispiteestä.
k, v = string.match(r, "\*?([^:]*): *(.*)")
-- Jos ei sisällä kakoispistettä, eikä se ole {{keski}}, lisätään se outoihin.
if k == nil then
if r ~= KESKI and r ~= '' then
table.insert(oudot, r)
end
else
-- Jos rivi on sisennetty, lisätään edellisen perään.
if k == '' then
rivit[i].v = rivit[i].v .. '\n*:' .. k .. v
rivit[i].m = rivit[i].m + 1
-- Muuten lisätään uusi rivi.
else
i = i + 1
rivit[i] = { k = avaa(k), v = v, m = 1 }
end
yht = yht + 1
end
end
return tulosta(rivit, oudot)
end
function m.jarjesta(frame)
frame = frame:getParent()
return parsi(frame.args[1])
end
return m