Moduuli:luokittelu
Moduulin luokittelu käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Tässä ohjeessa kuvataan toiminnallisuutta jonka kehitys on vielä kesken. Sivu on tarkoitettu lähinnä kehityksen apuvälineeksi, ei yleiseen käyttöön. |
Apumoduuli luokkien lisäämiseksi toisissa moduuleissa.
Funktiot
muokkaaasetaAakkostajalla2
muokkaaaseta{kieli =, luokka = [, sivu = ][, nimiavaruus = ]}
Asettaa luokan nimeltä luokka kielen kieli aakkostusavaimella. Jos parametri sivu on annettu, käytetään sitä aakkostusavaimen luomiseen. Jos parametri nimiavaruus on annettu, asettaa luokan vain, jos artikkeli on tässä nimiavaruudessa.
Parametrit:
- kieli: kielen kielikoodi (tai muu aakkostajan tunnus)
- luokka: luokan nimi, ilman Luokka:-etuliitettä
- sivu: (valinnainen) aakkostettava sivun nimi
- nimiavaruus: (valinnainen) nimiavaruus, jossa sivu luokitellan; 0 = artikkelinimiavaruus
-- Kun ollaan sivulla Schwarzfußkatze.
luokittelu.asetaAakkostajalla2{
kieli = "de",
luokka = "Saksan kielen kissaeläimet",
}
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:Saksan kielen kissaeläimet|SCHWARZFUSSKATZE]]"
luokittelu.asetaAakkostajalla{
kieli = "de",
luokka = "Saksan kielen kissaeläimet",
sivu = "Schwarzfußkatze"
}
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:Saksan kielen kissaeläimet|SCHWARZFUSSKATZE]]"
-- Kun ollaan sivulla Schwarzfußkatze.
luokittelu.asetaAakkostajalla2{
kieli = "de",
luokka = "Saksan kielen kissaeläimet",
nimiavaruus = 0
}
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:Saksan kielen kissaeläimet|SCHWARZFUSSKATZE]]"
-- Kun ollaan sivulla Malline:substantiivi/testit.
luokittelu.asetaAakkostajalla2{
kieli = "de",
luokka = "Saksan kielen kissaeläimet",
nimiavaruus = 0
}
mw.log(tostring(luokittelu)) -- Tulostaa "", koska ollaan Malline-nimiavaruudessa ei artikkelinimiavaruudessa
asetaAakkostajalla
muokkaaaseta(kieli, luokka[, title])
Käytä mielummin funktiota asetaAakkostajalla2.
Asettaa luokan nimeltä luokka kielen kieli aakkostusavaimella. Jos parametri title on annettu, käytetään sitä aakkostusavaimen luomiseen.
Parametrit:
- kieli: kielen kielikoodi (tai muu aakkostajan tunnus)
- luokka: luokan nimi, ilman Luokka:-etuliitettä
- title: (valinnainen) aakkostettava sivun nimi
-- Kun ollaan sivulla Schwarzfußkatze.
luokittelu.asetaAakkostajalla("de", "Saksan kielen kissaeläimet")
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:Saksan kielen kissaeläimet|SCHWARZFUSSKATZE]]"
luokittelu.asetaAakkostajalla("de", "Saksan kielen kissaeläimet", "Schwarzfußkatze")
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:Saksan kielen kissaeläimet|SCHWARZFUSSKATZE]]"
aseta
muokkaaaseta(luokka, aak[, nimiavaruus])
Asettaa luokan nimeltä luokka aakkostusavaimella aak. Jos parametri nimiavaruus on annettu, asettaa luokan vain, jos artikkeli on tässä nimiavaruudessa.
Parametrit:
- luokka: luokan nimi, ilman Luokka:-etuliitettä
- aak: luokalle annettava aakkostusavain.
- Huomaa, että aakkostusavain pitää antaa isoilla kirjaimilla, että aakkostus toimii kaikissa kielissä (esim. turkissa) oikein. Muissa kielissä myös pienet kirjaimet käyvät.
- nimiavaruus: (valinnainen) nimiavaruus, jossa artikkeli luokitellaan. Voi antaa numerolla tai nimellä. 0 = artikkelinimiavaruus
luokittelu.aseta("A", "X")
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:A|X]]"
luokittelu.aseta("A", "X")
luokittelu.aseta("A", "Y")
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:A|X]][[Luokka:A|Y]]"
luokittelu.aseta("A", "X")
luokittelu.aseta("A", "Y", "Moduuli")
mw.log(tostring(luokittelu)) -- Tulostaa "[[Luokka:A|X]][[Luokka:A|Y]]", jos ollan Moduuli-nimiavaruudessa, muuten "[[Luokka:A|X]]".
--- Apumoduuli luokkien lisäämiseksi toisissa moduuleissa.
local p = {
luokat = {},
aakkostajat = {},
nimiavaruus = nil
}
local kielikoodit = require("Moduuli:kielikoodit")
local artikkeliaakkostaja = require("Moduuli:artikkeliaakkostaja")
-- Asettaa luokan annetun aakkostuksen mukaan.
-- @param luokka: luokan nimi ilman nimiavaruutta
-- @param aak: aakkostusavain
-- @param nimiavaruus: (valinnainen) merkkijono nimiavaruudesta tai luettelo nimiavaruuksista;
-- luokka lisätään vain jos sivu on jossakin näistä
function p.aseta(luokka, aak, nimiavaruus)
assert(luokka, "Luokan nimi puuttuu")
local tobj = mw.title.getCurrentTitle()
if not nimiavaruus then
nimiavaruus = p.nimiavaruus
end
if nimiavaruus and not tobj:inNamespace(nimiavaruus) then
return
end
table.insert(p.luokat, {
["nimi"] = luokka,
["aak"] = aak
})
end
---
-- Asettaa luokan ja aakkostaa sivun annetun kielen mukaan.
-- @param params.kieli: aakkostajan tunnus (kielitunnus)
-- @param params.luokka: luokan nimi ilman nimiavaruutta
-- @param params.sivu: (valinnainen) aakkostajalle annettava sivun nimi, jos muu kuin PAGENAME
-- @param params.nimiavaruus: (valinnainen) merkkijono nimiavaruudesta tai luettelo nimiavaruuksista;
-- luokka lisätään vain jos sivu on jossakin näistä
function p.asetaAakkostajalla2(params)
local kieli = params.kieli
local luokka = params.luokka
local sivu = params.sivu
local nimiavaruus = params.nimiavaruus
-- Tallennetaan aakkostajat taulukkoon, koska ne pitää ladata erikseen.
if p.aakkostajat[kieli] == nil then
p.aakkostajat[kieli] = artikkeliaakkostaja.lataa_aakkostaja(kieli)
end
if not sivu then
sivu = mw.title.getCurrentTitle().text
end
local aak = p.aakkostajat[kieli].kuvaa_merkkijono(sivu)
p.aseta(luokka, aak, nimiavaruus)
end
---
-- Asettaa luokan ja aakkostaa sivun annetun kielen mukaan.
-- @param tunnus: aakkostajan tunnus
-- @param luokka: luokan nimi ilman nimiavaruutta
-- @param title: (valinnainen) sivun otsikko, jos muu kuin PAGENAME
-- @param nimiavaruus: (valinnainen) luokka lisätään vain jos sivu on tässä nimiavaruudessa
function p.asetaAakkostajalla(tunnus, luokka, title)
p.asetaAakkostajalla2{
kieli = tunnus,
luokka = luokka,
sivu = title
}
end
--- Palauttaa asetetut luokat tekstinä.
function p.hae()
local luokat = {}
for i, item in ipairs(p.luokat) do
table.insert(luokat, "[[Luokka:")
table.insert(luokat, item.nimi)
if item.aak and item.aak ~= "" then
table.insert(luokat, "|")
table.insert(luokat, item.aak)
end
table.insert(luokat, "]]")
end
return table.concat(luokat, "")
end
local monikot = {
["adjektiivi"] = "adjektiivit",
["adpositio"] = "adpositiot",
["adverbi"] = "adverbit",
["erisnimi"] = "erisnimet",
["fraasi"] = "fraasit",
["infiksi"] = "infiksit",
["interfiksi"] = "interfiksit",
["järjestysluku"] = "järjestysluvut",
["kardinaaliluku"] = "kardinaaliluvut",
["lyhenne"] = "lyhenteet",
["kirjoitusmerkki"] = "sanat",
["numeraali"] = "numeraalit",
["partikkeli"] = "partikkelit",
["prefiksi"] = "prefiksit",
["prepositio"] = "prepositiot",
["postpositio"] = "postpositiot",
["pronomini"] = "pronominit",
["sana"] = "sanat",
["substantiivi"] = "substantiivit",
["suffiksi"] = "suffiksit",
["supistuma"] = "supistumat",
["interjektio"] = "interjektiot",
["konjunktio"] = "konjunktiot",
["verbi"] = "verbit"
}
--- Muuttaa sanarivimallineissa käytetyt avainsanat luokannimissä käytettyihin monikkomuotoihin.
-- @param sanalk: esim. "substantiivi"
function p.luokkaMonikko(sanalk)
if monikot[sanalk] then
return monikot[sanalk]
end
error("tuntematon sanaluokka: " .. sanalk)
end
--- Palauttaa annetun kielen kielen genetiivissä luokkanimissä käytetyssä muodossa.
-- @param kielikoodi: kielen kielikoodi
function p.luokkaGenetiivi(kielikoodi)
return kielikoodit.genetiivissa(kielikoodi, true)
end
--- Palauttaa annetun kielen annetun aiheen luokan nimen.
-- @param kielikoodi: kielen koodi, esim. "fr"
-- @param aihe: aihe esim. "substantiivit"
--
-- Tiettyjen luokkien nimet ovat esim. "Ranskan sanat" muiden esim. "Ranskan
-- kielen substantiivit".
function p.kielenLuokka(kielikoodi, aihe)
local gen = p.luokkaGenetiivi(kielikoodi)
-- Tässä luetellaan aiheet, joiden luokkanimiin ei tule "kielen"-sanaa.
if aihe == "sanat" then
return gen .. " " .. aihe
end
-- Kaikkiin muihin laitetaan "kielen".
return gen .. " kielen " .. aihe
end
setmetatable(p, {
-- Funktio, jota kutsutaan, kun taulukko muutetaan merkkijonoksi.
__tostring = function (p)
return p.hae()
end
})
return p