Modul:no-noun

Fra Wiktionary

Dokumentasjon for denne modulen kan opprettes på Modul:no-noun/dok

--Under development: Just trying

local gt = require("Modul:grammar-table")
gt.setLanguage("no")

local export = {}
local inflection_rows = mw.loadData("Modul:no-noun/patterns")
--midlertidlig løsning
function getNorm(code)
	local norm_d = {}
	norm_d["nn"] = "nynorsk"
	norm_d["nb"] = "bokmål"
	norm_d["nrm"] = "riksmål"
	norm_d["nb/nrm"] = "bokmål/riksmål"
	norm_d["nb/nn"] = "bokmål/nynorsk"
	norm_d["no"] = "bokmål/riksmål/nynorsk"
	
	return '(<span style="font-variant:small-caps; font-size:0.9em;">' .. norm_d[code] .. '</span>)'
end

function export.getStem(pagename, rule)
	local last = mw.ustring.sub(pagename, -1, -1)
	local last_2 = mw.ustring.sub(pagename, -2, -1)

	if(rule=="nn-m-fl" and last_2=="ar") then
		return mw.ustring.sub(pagename, 1, -3)
	elseif(rule=="nb-m-fl" and last_2=="er") then
		return mw.ustring.sub(pagename, 1, -3)
	elseif(rule=="no-n-sg" or rule=="nn-n-sg" or rule=="nb-n-sg") then
		if(last=="e") then
			return mw.ustring.sub(pagename,1,-2)
		else
			return pagename
		end
	end
	return ""
end


function export.getInflectionRow(arglist)
	local pagename = mw.title.getCurrentTitle().text
	local rule = arglist.args[2]
	local infl_row = inflection_rows[rule]
	local stem = export.getStem(pagename, rule)
	local norm = getNorm(mw.ustring.sub(rule, 1, 2))

	if(rule=="nn-m-fl") then
		local form1 = stem .. infl_row.upl
		local form2 = stem .. infl_row.dpl
		return gt.getRow({'|colspan="2"', "(''kun flertall'')"}, form1, form2, norm)
	elseif(rule=="nb-m-fl") then
		local form1 = stem .. infl_row.upl
		local form2 = stem .. infl_row.dpl
		return gt.getRow({'|colspan="2"', "(''kun flertall'')"}, form1, form2, norm)
	elseif(rule=="no-n-sg" or rule=="nn-n-sg" or rule=="nb-n-sg") then
		local form1 = pagename
		local form2 = stem .. infl_row.dsg
		return gt.getRow(form1, form2, {'|colspan="2"', "(''[[Tillegg:Substantiv som ikke telles|utellelig]]'')"}, norm)
	end
	return "error"
end

return export;