Moduuli:tavutus

Wikisanakirjasta

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

--- Muotoilee annetut tavut siten, että jokaiseen väliin tulee rivinkeskinen piste.
--  Jos parametri k on annettu, lisää sivun luokkan "X:n kielen n-tavuiset sanat".

local luokat = require("Moduuli:luokittelu")

local export = {}

local category_names = {
    [1]  = "yksitavuiset",
    [2]  = "kaksitavuiset",
    [3]  = "kolmitavuiset",
    [4]  = "nelitavuiset",
    [5]  = "viisitavuiset",
    [6]  = "kuusitavuiset",
    [7]  = "seitsentavuiset",
    [8]  = "kahdeksantavuiset",
    [9]  = "yhdeksäntavuiset",
    [10] = "kymmentavuiset"
}

local function category_name_for_n_syllables(n_syllables)
    if category_names[n_syllables] then
        return category_names[n_syllables] .. " sanat"
    end

    return n_syllables .. "-tavuiset sanat"
end


local function add_category(langcode, n_syllables)
    local category_name = luokat.kielenLuokka(langcode, category_name_for_n_syllables(n_syllables))        

   if category_name then
       luokat.asetaAakkostajalla(langcode, category_name)
   end

end

function export.Tavutus(frame)
    local pframe = frame:getParent()

    local syllables = {}
    for i, v in ipairs(pframe.args) do
    	syllables[i] = v	
    end

    if pframe.args.k then
        add_category(pframe.args.k, #syllables)
    end

    return table.concat(syllables, "‧"), luokat

end

return export