Module:ca-common

Definition from Wiktionary, the free dictionary
Jump to: navigation, search

This module contains common functions that are needed for other Catalan modules. It is not meant to be invoked by templates.


local export = {}

-- Make a link out of a form, or show a dash if empty.
function export.link_form(form, tag)
    if not PAGENAME then
        PAGENAME = mw.title.getCurrentTitle().text
    end
    
    if type(form) == "table" then
        for n, subform in pairs(form) do
            form[n] = export.link_form(subform, tag)
        end
        return table.concat(form, ", ")
    else
        if form ~= "" then
            return "<" .. (tag or "span") .. " lang=\"ca\">[[" .. form .. (form ~= PAGENAME and "#Catalan|" .. form or "") .. "]]</" .. (tag or "span") .. ">"
        else
            return "&mdash;"
        end
    end
end

-- Remove accents from any of the vowels in a word.
-- If an accented í follows another vowel, a diaeresis is added following
-- normal Catalan spelling rules.
function export.remove_accents(word)
    word = mw.ustring.gsub(word, "à", "a")    
    word = mw.ustring.gsub(word, "[èé]", "e")
    word = mw.ustring.gsub(word, "([gq]u)í", "%1i")
    word = mw.ustring.gsub(word, "([aeiou])í", "%1ï")
    word = mw.ustring.gsub(word, "í", "i")
    word = mw.ustring.gsub(word, "[òó]", "o")
    word = mw.ustring.gsub(word, "ú", "u")
    
    return word
end

-- Applies alternation of the final consonant of a stem, converting the form
-- used before a back vowel into the form used before a front vowel.
function export.back_to_front(stem)
    return (stem:gsub("qu$", "qü"):gsub("c$", "qu"):gsub("ç$", "c"):gsub("gu$", "gü"):gsub("g$", "gu"):gsub("j$", "g"))
end

-- Applies alternation of the final consonant of a stem, converting the form
-- used before a front vowel into the form used before a back vowel.
function export.front_to_back(stem)
    return (stem:gsub("c$", "ç"):gsub("qu$", "c"):gsub("qü$", "qu"):gsub("g$", "j"):gsub("gu$", "g"):gsub("gü$", "gu"))
end

return export