Automatisk kategorisering av etymologi-kategorier. Se i sammenheng med Modul:etymologi.

Bokmål/nynorsk/riksmål kategoriseres som norsk.


local lg = require("Modul:lang")
local st = require("Modul:string")
local export = {}

function export.getNormalStructure(pagename, lang, lang2, cat_type)
    local uc_lang = mw.getContentLanguage():ucfirst(lang)

    local t = {
      pref = "[[Kategori:Ord i " .. lang .. " etter etymologi]]" .. 
             "[[Kategori:Ord som er dannet ved prefiks|" .. lang .. "]]",
      pref_c = "[[Kategori:Ord i " .. lang .. " som er dannet av prefiks|" ..
                 st.sub({args={pagename, 
                             st.find({args={pagename, "«"}})+1,
                             st.find({args={pagename, "»"}})-2}})
                .. "]]",
      suff = "[[Kategori:Ord i " .. lang .. " etter etymologi]]" .. 
             "[[Kategori:Ord som er dannet ved suffiks|" .. lang .. "]]",
      suff_c = "[[Kategori:Ord i " .. lang .. " som er dannet av suffiks|" ..
                 st.sub({args={pagename, 
                             st.find({args={pagename, "«"}})+2,
                             st.find({args={pagename, "»"}})-1}})
                .. "]]",
      inf = "[[Kategori:Ord i " .. lang .. " etter etymologi]]" ..
            "[[Kategori:Ord som er dannet ved infiks|" .. lang .. "]]",
      inf_c = "[[Kategori:Ord i " .. lang .. " som er dannet av infiks|" ..
                 st.sub({args={pagename, 
                             st.find({args={pagename, "«"}})+2,
                             st.find({args={pagename, "»"}})-2}})
                .. "]]",
      sam = "[[Kategori:Ord i " .. lang .. " etter etymologi]]" ..
            "[[Kategori:Sammensatte ord|" .. lang .. "]]",
      rot = "[[Kategori:Ord etter etymologi|" .. lang .. "]]",
      rot_c = "[[Kategori:Ord i " .. lang .. " etter etymologi|" ..
               st.sub({args={pagename,
                             st.find({args={pagename, "rot i"}})+6, -1}})
            .. "]]" ..
            "[[Kategori:" .. st.replace({args = {pagename, "i " .. lang, ""}})
             .. "|" .. lang .. "]]",
      olaan = "[[Kategori:Ord med rot i " .. lang .. "|*]]",
      olaan_c = "[[Kategori:Ord i " .. lang .. " med rot i " .. lang2 .. "]]" ..
             "[[Kategori:Oversettelseslån fra " .. lang2 .. "|" .. lang .."]]",
      etym = "[[Kategori:Ord etter etymologi|" .. lang .. "]]" ..
             "[[Kategori:" .. uc_lang .."|*]]"
    }

    local text = t[cat_type]
    return text
end


function export.getMainScriptCode(args)
    local pagename = args.args[1]

    -- get language
    local s_pos = 0
    local f_pos = 0
    local lang = 0

    -- get type: possible prefiks, suffiks, sammensatte ord, med rot i, oversettelseslån
    local cat_type = ""

    if (st.find({args = {pagename, "prefikset"}})>0) then
        cat_type = "pref_c"
    elseif(st.find({args = {pagename, "suffikset"}})>0) then
        cat_type = "suff_c"
    elseif(st.find({args = {pagename, "infikset"}})>0) then
        cat_type = "inf_c"
    elseif (st.find({args = {pagename, "prefiks"}})>0) then
        cat_type = "pref"
    elseif(st.find({args = {pagename, "suffiks"}})>0) then
        cat_type = "suff"
    elseif(st.find({args = {pagename, "infiks"}})>0) then
        cat_type = "inf"
    elseif(st.find({args = {pagename, "Sammensatte"}})>0) then
        cat_type = "sam"
    elseif(st.find({args = {pagename, "Ord med"}})>0) then
        cat_type = "rot"
    elseif(st.find({args = {pagename, "rot"}})>0) then
        cat_type = "rot_c"
    elseif(st.find({args = {pagename, "etter etymologi"}})>0) then
        cat_type = "etym"
    elseif(st.find({args = {pagename, "Oversettelseslån fra"}})>0) then
        cat_type = "olaan"
    elseif(st.find({args = {pagename, "Oversettelseslån"}})>0) then
        cat_type = "olaan_c"
    end

    -- get language
    if (cat_type == "rot") then
        s_pos = 15   -- "Ord med rot i "
        f_pos = st.find({args = {pagename, "]", s_pos}})-1
    elseif (cat_type == "sam") then
        s_pos = 19   -- "Sammensatte ord i "
        f_pos = st.find({args = {pagename, "]", s_pos}})-1
    elseif(cat_type == "olaan") then
        s_pos = st.find({args = {pagename, "fra "}})+4
        f_pos = -1
    elseif(cat_type == "olaan_c") then
        s_pos = st.find({args = {pagename, " i ", s_pos}})+2
        f_pos = st.find({args = {pagename, " fra ", s_pos}})-1
    elseif(st.find({args = {pagename, "Ord i "}})>0) then
        s_pos = 7
        f_pos = st.find({args = {pagename, " ", s_pos}})-1
    end

    local lang = mw.ustring.sub(pagename, s_pos, f_pos)
    local lang2 = ""
    if(cat_type == "olaan_c") then
        lang2 = st.sub({args={pagename,
                       st.find({args = {pagename, " fra "}})+5,-1}})
    end

    local text = export.getNormalStructure(pagename, lang, lang2, cat_type)
    return text
end

return export