Moduuli:sanarivi
Moduulin sanarivi käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
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 vertailu
if frame.args.vert == "-" then
frame.args.vert = "ei vertailuasteita"
end
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), ""),
")"),
"")), 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
local sanalk = alkup_frame.args.sanaluokka
-- Haetaan malline tai moduuli, jonka parametreja käytetään.
while frame.args.frame == 'parent' do
frame = frame:getParent()
end
frame.args = apu.poista_tyhjat(frame.args)
-- 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.asetaAakkostajalla2{
kieli = lang,
luokka = luokat.kielenLuokka(lang, "sanat"),
sivu = frame.args.aak, -- voi olla nil
nimiavaruus = 0 -- ei luokitella, jos ollaan esim. testi- tai artikkelipohjasivulla
}
luokat.asetaAakkostajalla2{
kieli = lang,
luokka = luokat.kielenLuokka(lang, luokat.luokkaMonikko(sanalk)),
sivu = frame.args.aak,
nimiavaruus = 0
}
-- Jos kielikohtaisessa modulissa on määritelty lisaluokat-funktio, kutsutaan
-- sitä. Lisaluokat-funktiossa voi lisätä ylimääräisiä luokkia.
if sub and sub.lisaluokat then
sub.lisaluokat(frame, luokat)
end
-- Käytetään kielen omassa moduulissa määriteltyä sopivaa funktiota, jos
-- sellainen on.
if sub and sub[sanalk] and sanalk ~= "sana" then
return sub[sanalk](frame, luokat)
elseif sub and sub.sana then
return sub.sana(sanalk, frame, luokat)
end
-- Muuten käytetään yleistä funktiota.
return muotoile_sanarivi(frame), luokat
end
return p