Moduuli:sanarivi/sr

Kohteesta Wikisanakirja
Siirry navigaatioon Siirry hakuun

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:sanarivi/sr/ohje

--- Moduulia käytetään serbialle (sr), serbokroaatille (sh) ja bosnialle (bs).
local p = {}

local apu = require "Moduuli:Mallinetyokalut"
local kielilinkki = require("Moduuli:Kielilinkki")
local luokat = require("Moduuli:luokittelu")
local pt     = require "Moduuli:ParametrisoituTeksti"
local srlib  = require("Moduuli:LibSanarivi")

local function hae_kirjoitusjarjestelma(sana)
    if mw.ustring.find(sana, "[Ѐ-ӿ]") then     -- u+–0400–u+04ff
        return "Cyrl"
    elseif mw.ustring.find(sana, "[A-ɏ]") then -- u+0041–u+024F
        return "Latn"
    end
    
    error("Otsikko ei sisällä latinalaisia eikä kyrillisiä merkkejä: " .. sana)
end

function p.substantiivi(frame, luokat)
    local args     = frame.args
    local args2    = apu.numeroidut_parametrit(frame.args, { "mon", "monpaino" })
    local hakusana = apu.ensimmainen_ei_tyhja{ frame.args.paino, frame.args[2], mw.title.getCurrentTitle().text }   
    local lang     = args[1]
    local sc       = hae_kirjoitusjarjestelma(mw.title.getCurrentTitle().text)
    local lgsc     = lang .. "-" .. sc

    -- Kielilinkin lisäparametrit.
    local lp_lat = {
        ["elem"] = "b",
        ["kuvaus"] = "rm/rinnakkaismuoto-lat" }
    
    local lp_kyr = {
        ["elem"] = "b",
        ["kuvaus"] = "rm/rinnakkaismuoto-kyr" }
    
    -- Monistetaan kaikille monikoille
    local lp_mon = apu.map(function (mon) return {
                ["elem"]   = "b", 
                ["kuvaus"] = "monikko" } end, args2.mon or {})

    return pt.muotoile(
        pt.ryhma("",
            srlib.hakusana(hakusana, lgsc, sc), " ",
            srlib.sukuteksti(args.suku), " ",
            pt.ryhma("(",
                pt.ryhma("''latinalainen'' ", srlib.kielilinkki(lang .. "-Latn", args.lat, nil, lp_lat), ""), ", ",
                pt.ryhma("''kyrillinen'' ",   srlib.kielilinkki(lang .. "-Cyrl", args.kyr, nil, lp_kyr), ""), ", ",
                srlib.monikkoluettelo(lgsc, args2.mon, args2.monpaino, nil, lp_mon),
            ")"),
        "")), luokat
end


function p.sana(sanalk, frame, luokat)
    local args     = frame.args
    local hakusana = apu.ensimmainen_ei_tyhja{ frame.args.paino, frame.args[2], mw.title.getCurrentTitle().text }   
    local lang     = args[1]
    local sc       = hae_kirjoitusjarjestelma(mw.title.getCurrentTitle().text)
    local lgsc     = lang .. "-" .. sc

    -- Kielilinkin lisäparametrit.
    local lp = { ["elem"] = "b" }
    
    return pt.muotoile(
        pt.ryhma("",
            srlib.hakusana(hakusana, lgsc, sc), " ",
            srlib.sukuteksti(args.suku), " ",
            pt.ryhma("(",
                pt.ryhma("''latinalainen'' ", srlib.kielilinkki(lang .. "-Latn", args.lat, nil, lp), ""), ", ",
                pt.ryhma("''kyrillinen'' ",   srlib.kielilinkki(lang .. "-Cyrl", args.kyr, nil, lp), ""), 
            ")"),
        "")), luokat
end


return p