Modul:etym-kat
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