Moduuli:sanarivi/pronomini
Ulkoasu
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:sanarivi/pronomini/ohje
--- [[Malline:pronomini]]-mallineen toimintalogiikka.
local p = {}
local kirjoitusjarjestelmat = require("Moduuli:Kirjoitusjärjestelmät")
local luokat = require("Moduuli:luokittelu")
local apu = require("Moduuli:Mallinetyokalut")
local srlib = require("Moduuli:LibSanarivi")
local paramtext = require("Moduuli:ParametrisoituTeksti")
local ryhma, var, luettelo, tai = paramtext.ryhma, paramtext.muuttuja, paramtext.luettelo, paramtext.tai
local function muotoile_sanarivi(frame, luokat)
local args = frame.args
local hakusana = apu.ensimmainen_ei_tyhja{ frame.args.paino,
frame.args.vok,
frame.args[2],
mw.title.getCurrentTitle().text }
local lang = frame.args[1]
local kirj = kirjoitusjarjestelmat.yleinenKirjoitusjarjestelma(lang)
local args2 = apu.numeroidut_parametrit(frame.args, { "mon", "monpaino", "monvok", "monlat" })
local montxt
if args2.monpaino then
montxt = args2.monpaino
else
montxt = args2.monvok
end
-- Monistetaan lisäparametrit kaikille monikoille.
local lp_mon = apu.map(function (_) return { ["elem"] = "b" } end, args2.mon or {})
return paramtext.muotoile(
ryhma("",
tai(
var(frame.args["sanarivi"]),
srlib.hakusana(hakusana, lang, kirj)
), " ",
srlib.sukuteksti(args.suku), " ",
ryhma("(", srlib.latmerkkaus(args.lat), ")"), " ",
ryhma("(",
ryhma("''kyrillinen'' ", var(args.kyr), ""), ", ",
srlib.monikkoluettelo(lang, args2.mon, montxt, args2.monlat, lp_mon),
")"),
"")), luokat
end
--- Pääohjelma.
-- @param frame: Jos kutsu sisältää parametrin frame=parent, käytetään
-- kutsuvan mallineen parametreja moduulin parametrien sijasta.
-- 1. nimetön on kielikoodi
-- 2. nimetön on valinnainen sanarivillä näytettävä teksti sivun otsikon sijaan.
function p.Sanarivi(frame)
local alkup_frame = frame
-- Haetaan malline tai moduuli, jonka parametreja käytetään.
while frame.args.frame == 'parent' do
frame = frame:getParent()
end
-- Kielikoodi.
local lang = frame.args[1]
assert ( lang, "Pakollinen kielikoodi puuttuu (parametri 1)" )
-- Haetaan kielelle määritetty oma moduuli, jos sellainen on.
local sub = require("Moduuli:sanarivi/alimoduulit").hae_kielikohtainen_moduuli(lang)
-- Jos alimoduuli toteuttaa Sanarivi-funktion, annetaan koko
-- hoito sen hoidettavaksi.
if sub and sub.Sanarivi then
return sub.Sanarivi(alkup_frame)
end
-- Yleiset sanaluokkaluokat.
luokat.asetaAakkostajalla(lang, luokat.kielenLuokka(lang, "sanat"))
--luokat.asetaAakkostajalla(lang, luokat.kielenLuokka(lang, "pronominit"))
-- Käytetään kielen omassa moduulissa määriteltyä sopivaa funktiota, jos
-- sellainen on.
if sub and sub.pronomini then
return sub.pronomini(frame, luokat)
elseif sub and sub.sana then
return sub.sana("pronomini", frame, luokat)
end
-- Muuten käytetään yleistä funktiota.
return muotoile_sanarivi(frame), luokat
end
return p