Tässä ohjeessa kuvataan toiminnallisuutta jonka kehitys on vielä kesken. Sivu on tarkoitettu lähinnä kehityksen apuvälineeksi, ei yleiseen käyttöön.

Korean sanoille voi käyttää seuraavia parametreja:

  • hanja: Sanan hanjakirjoitusasu (kun artikkelin kirjoitusasu on hangulia)
  • hangul: Sanan hangulkirjoitusasu (kun artikkelin kirjoitusasu on hanjaa)
  • lat: Latinisointi.
Tätä artikkelia tai artikkelin osaa on pyydetty parannettavaksi.
Syy: päivitettävä
Voit auttaa Wikisanakirjaa parantamalla artikkelia. Lisää tietoa saattaa olla keskustelusivulla.

local p = {}

local kielilinkki = require("Moduuli:Kielilinkki")

function p.muotoileSanarivi(title, lat, hangul, hanja)
    local output = {}

    -- Lihavoitu sana sanarivillä.
    
    local b = mw.html.create('b')
        :node(title)
        :done()      
    
    if title == hangul then
        b:attr("lang", "ko-Hang")
            :attr("class", "hakusana Hang")
        hangul = nil
    else
        b:attr("lang", "ko-Hani")
            :attr("class", "hakusana Hani")
        hanja = nil
    end
    
    table.insert(output, tostring(b))


    if lat then
        table.insert(output, ' (<span class="lat">')
        table.insert(output, lat)
        table.insert(output, "</span>)")  
        if hangul or hanja then
            table.insert(output, " ")
        end
    end

    if hangul or hanja then
        table.insert(output, " (")
    end
    
    if hangul then
        table.insert(output, "''hangul'' ")
        table.insert(output, kielilinkki.linkki_tai_nil{
			 kieli  = "ko-Hang",
			 kohde  = hangul,
			 kuvaus = "rm/ko-hangul" })
	
        table.insert(output, "")      
    end

    if hanja then
        table.insert(output, "''hanja'' ")
        table.insert(output, kielilinkki.linkki_tai_nil{
			 kieli  = "ko-Hani",
			 kohde  = hanja,
			 kuvaus = "rm/ko-hanja"
	})
        table.insert(output, "")
    end

    if hangul or hanja then
        table.insert(output, ")")
    end
    
    return table.concat(output, "")
end



function p.sana(sanalk, frame, luokat)
    assert(frame.args[1] == "ko", "Väärä kieli!")
    
    -- Sanarivillä näkyvä sana.
    local title = frame.args[2] or mw.title.getCurrentTitle().text

    local lat    = frame.args.lat
    local hanja  = frame.args.hanja
    local hangul = frame.args.hangul
    
    if not lat then
        -- Jos artikkelissa ei ole lat-merkintää, laitetaan huomiota kapaaviin.
        luokat.asetaAakkostajalla("ko", "Korean sana-artikkelit, joista puuttuu lat-merkintä")
    end

    if mw.ustring.find(title, "[가-힣]") then     -- u+ac00–u+d7a3
        hangul = title
    elseif mw.ustring.find(title, "[一-鿯]") then -- u+4e00–u+9fef
        hanja = title
    else
        error("Outo otsikko: " .. title)
    end

    -- Nämä on jo asetettu sanarivi-moduulissa, mutta korvataan ne mahdollisella
    -- eri aakkostuksella.
    luokat.asetaAakkostajalla("ko", luokat.kielenLuokka("ko", "sanat"))   
    if sanalk ~= "erisnimi" then
        luokat.asetaAakkostajalla("ko", luokat.kielenLuokka("ko", luokat.luokkaMonikko(sanalk)), hangul or title)
    end

    return p.muotoileSanarivi(title, lat, hangul, hanja), luokat
end

function p.Sanarivi(frame)
    local sanalk = frame.args.sanaluokka
    
    if frame.args.frame == 'parent' then
        frame = frame:getParent()
    end
    
    assert(frame.args[1] == "ko", "Väärä kieli!")
    
    return p.sana(sanalk, frame, require("Moduuli:luokittelu"))
end

return p