Moduuli:sanarivi/ja
Ulkoasu
Moduulin sanarivi/ja käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Japanin sanoille voi käyttää seuraavia sanariviparametreja:
hira
: Sanan hiraganakirjoitusasu (kun artikkelin kirjoitusasu on jotakin muuta)kata
: Sanan katakanakirjoitusasu (kun artikkelin kirjoitusasu on jotakin muuta ja katakanakirjoitusasulle on syytä tehdä oma artikkeli)hrkt
: Sanan kirjoitusasu hiraganalla ja katakanalla. Tätä käytetään kun artikkelin sana sisältää kanjeja ja katakanaa. Kanjit kirjoitetaan silloin auki hiraganalla. TODO: parametrin uudelleennimeäminenkana
:ksi.lat
: Sana romajilla.rom
: Turha synonyymi parametrillelat
.taiv
: Taivutustyyppi adjektiiveille (na
taii
) ja verbeille.
local p = {}
local luokat = require("Moduuli:luokittelu")
local apu = require("Moduuli:Mallinetyokalut")
local paramtext = require("Moduuli:ParametrisoituTeksti")
local srlib = require("Moduuli:LibSanarivi")
local ryhma, var = paramtext.ryhma, paramtext.muuttuja
function p.muotoileSanarivi(PAGENAME, hira, kata, hrkt, rom, taiv)
local muotoilu = paramtext:new()
local lang = "ja"
local kirj = "Jpan"
local rom_viittaus
-- Sivu johon romaji-artikkeli linkittää
if PAGENAME ~= hira and PAGENAME ~= kata then
rom_viittaus = hira or kata
else
rom_viittaus = PAGENAME
end
-- Lisäparametrit kielilinkeille.
lp_hira = {
["elem"] = "b",
["kuvaus"] = "rm/ja-hiragana",
["kuvaus-param"] = { [8] = rom } }
lp_kata = {
["elem"] = "b",
["kuvaus"] = "rm/ja-katakana",
["kuvaus-param"] = { [8] = rom } }
lp_hrkt = {
["elem"] = "b",
["kuvaus"] = "rm/ja-hiragana",
["kuvaus-param"] = { [8] = rom } }
lp_rom = {
["elem"] = "b",
["class"] = "linkki sanarivi-lat",
["kuvaus"] = "tr/ja-transkriptio",
["kuvaus-param"] = { [4] = rom_viittaus } }
muotoilu:prosessoi(ryhma("",
srlib.hakusana(PAGENAME, lang, kirj), " ",
ryhma("(",
ryhma("''", var( taiv ), "-taivutus''"), 1, "; ",
ryhma("''hiragana'' ", srlib.kielilinkki("ja-Hira", hira, nil, lp_hira), ""), ", ",
ryhma("''katakana'' ", srlib.kielilinkki("ja-Kana", kata, nil, lp_kata), ""), ", ",
ryhma("''hiragana ja katakana'' ", srlib.kielilinkki("ja-Hrkt", hrkt, nil, lp_hrkt), ""), ", ",
ryhma("''rōmaji'' ", srlib.kielilinkki("ja-Latn", rom, nil, lp_rom), ""), ")"), ""))
return tostring(muotoilu), luokat
end
--- Pääohjelma.
-- @param frame: Jos kutsu sisältää parametrin |frame=parent|, käytetään
-- kutsuvan mallineen parametreja moduulin parametrien sijasta
-- Framen täytyy sisältää joko kata- tai hira- parametrin tai ei kumpaakaan;
-- rom-parametri on valinnainen; 1. nimetön on valinnainen sanarivillä
-- näytettävä teksti sivun otsikon sijaan. Arg sanaluokka kertoo minkä
-- sanaluokan mallineesta tätä kutsutaan.
function p.Sanarivi(frame)
local sanalk = frame.args.sanaluokka
if frame.args.frame == 'parent' then
frame = frame:getParent()
end
assert(frame.args[1] == "ja", "Väärä kieli!")
-- Sanarivillä näkyvä sana.
local PAGENAME = apu.ensimmainen_ei_tyhja{ frame.args[2], mw.title.getCurrentTitle().text }
local rom = frame.args.rom or frame.args.lat
local hira = frame.args.hira
local kata = frame.args.kata
local hrkt = frame.args.hrkt
local taiv = frame.args.taiv
-- Jos artikkelissa ei ole romaji-merkintää, laitetaan huomiota kapaaviin.
if not rom then
luokat.asetaAakkostajalla("ja", "Japanin sana-artikkelit, joista puuttuu romaji-merkintä")
end
-- Artikkelit, joiden nimessä on pelkkää hiraganaa, laitetaan hiraganaluokkaan.
if mw.ustring.find(PAGENAME, "^[-ゟ]+$") then
luokat.asetaAakkostajalla("ja", "Japanin lemmat — hiragana")
-- Jos artikkelista puuttuu kirjoitusasu hiraganalla, laitetaan huomiota kaipaaviin.
elseif not hira then
luokat.asetaAakkostajalla("ja", "Japanin sana-artikkelit, joista puuttuu hiragana-merkintä")
end
-- Artikkelit, joiden nimessä on pelkkää katakanaa, laitetaan katakanaluokkaan.
if mw.ustring.find(PAGENAME, "^[゠-ヿ]+$") then
luokat.asetaAakkostajalla("ja", "Japanin lemmat — katakana")
end
-- Pääluokkiin luokitus. Poistetaan pelkästään tarkkeet. Ei aakkosteta muuten.
luokat.asetaAakkostajalla("ja", luokat.kielenLuokka("ja", "sanat"))
luokat.asetaAakkostajalla("ja", luokat.kielenLuokka("ja", luokat.luokkaMonikko(sanalk)))
return p.muotoileSanarivi(PAGENAME, hira, kata, hrkt, rom, taiv), luokat
end
return p