Moduuli:la-subs-taiv
Ulkoasu
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:la-subs-taiv/ohje
local apu = require('Moduuli:Mallinetyokalut')
local kielilinkki = require('Moduuli:Kielilinkki')
local ttapu = require('Moduuli:Taivutustaulukkotyökalut')
local autolinkki = require('Moduuli:Automaattilinkki')
local m = {}
--- Luo kuvaus-attribuutin tekstin sanan taivutusmuotojen nimistä.
-- @param sana: linkitettävä sana
function m.tee_linkki(sana, lihavoi)
local sanan_ryhma = m.ryhmat[sana]
-- Jos linkki on nykyiselle sivulle.
if not sanan_ryhma then
return sana
elseif autolinkki.muuta("la", sana) == mw.title.getCurrentTitle().text then
if lihavoi then
return "'''" .. sana .. "'''"
else
return sana
end
end
-- Luodaan kuvaus-parametri yhdistämällä kaikkien samannäköisten muotojen nimet (aakkosjärjestyksessä).
local taivutusmuodot = table.concat(sanan_ryhma, " ")
-- Jos ryhmässä on useita taivutusmuotoja, käytetään saksan omia artikkelipohjia. Muuten
-- käytetään yleistä.
if #sanan_ryhma > 1 then
return kielilinkki.linkki{
kieli = "la",
kohde = sana,
kuvaus = "tm/la/n/" .. taivutusmuodot,
["kuvaus-param"] = { [9] = "s" },
autolinkki = true
}
end
return kielilinkki.linkki{
kieli = "la",
kohde = sana,
kuvaus = "tm/2/n/" .. taivutusmuodot,
["kuvaus-param"] = { [9] = "s" },
autolinkki = true
}
end
--- Tuottaa taivutustaulukon solun sisällön.
--
-- @param muoto: Taivutusmuotoparametrin nimi, esim "3.inf.adess".
function m.solu(muoto, frame, lihavoi)
local sanat = m.taivutusmuodot[muoto]
if not sanat or #sanat == 0 then
return ""
end
-- Viiva arvona estää muodon näyttämisen.
if sanat == "-" or sanat[1] == "-" then
return "–"
end
local linkit_1s = apu.map(
function (sana)
return m.tee_linkki(sana, lihavoi)
end,
sanat
)
if toissijaiset then
return mw.text.listToText( linkit_1s, '<br/>', '<br/>') .. "<br/>" .. toissijaiset
else
return mw.text.listToText( linkit_1s, '<br/>', '<br/>')
end
end
function m.suodata_taivutusmuodot()
if m.args.yks == "-" then
m.taivutusmuodot["y.nom"] = { "-" }
m.taivutusmuodot["y.akk"] = { "-" }
m.taivutusmuodot["y.dat"] = { "-" }
m.taivutusmuodot["y.gen"] = { "-" }
m.taivutusmuodot["y.abl"] = { "-" }
end
if m.args.mon == "-" then
m.taivutusmuodot["mon.nom"] = { "-" }
m.taivutusmuodot["mon.akk"] = { "-" }
m.taivutusmuodot["mon.dat"] = { "-" }
m.taivutusmuodot["mon.gen"] = { "-" }
m.taivutusmuodot["mon.abl"] = { "-" }
end
end
function m.Taivutustaulukko(frame)
m.args = frame.args
-- Poistetaan mahdolliset tyhjinä annetut parametrit.
m.args = apu.poista_tyhjat(m.args)
-- Taulukoidaan samannimiset parametrit, esim. jos on annettu useita eri muotoja ind.p.y3p-parametrille kaksi muotoa
-- ["y.gen1"] = "x" ja ["y.gen2"] = "y", yhdistetään ne taulukoksi ["y.gen"] = { "x", "y" }.
m.taivutusmuodot = apu.numeroidut_parametrit(m.args, {
"y.nom",
"y.akk",
"y.dat",
"y.gen",
"y.abl",
"mon.nom",
"mon.akk",
"mon.dat",
"mon.gen",
"mon.abl",
})
-- Suodatetaan yks- ja mon-parametrien mukaisesti pois muodot, joita ei näytetä.
m.suodata_taivutusmuodot()
-- Luodaan ryhmät samannäköisten taivutusmuotojen mukaan.
m.ryhmat = ttapu.ryhmittele_arvoittain(m.taivutusmuodot)
return frame:expandTemplate{
title = "la-subs/taulukko",
args = {
["y.nom"] = m.solu("y.nom", frame, m.args.yks ~= "-"),
["y.akk"] = m.solu("y.akk", frame),
["y.dat"] = m.solu("y.dat", frame),
["y.gen"] = m.solu("y.gen", frame),
["y.abl"] = m.solu("y.abl", frame),
["mon.nom"] = m.solu("mon.nom", frame, m.args.yks == "-"),
["mon.akk"] = m.solu("mon.akk", frame),
["mon.dat"] = m.solu("mon.dat", frame),
["mon.gen"] = m.solu("mon.gen", frame),
["mon.abl"] = m.solu("mon.abl", frame),
["tarkenne"] = m.args.tarkenne,
}
}
end
return m