Module:nn-verb-reg

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

local lang = require("Module:languages").getByCode("nn")

local function link(word, form)
	return "[[" .. form .. "]]"
end

local function make_root2(root)
	root = root:gsub("j$", "")
	return root:gsub("(.)%1$", "%1"), root
end
 
function export.main(frame)
	local PAGENAME = mw.title.getCurrentTitle().text
	local args = frame:getParent().args
	local class = frame.args[1]  
	local length = PAGENAME:len()
	local root = PAGENAME:gsub("[ae]$", "")
	
	local data = {lang = lang, pos_category = "verbs", categories = {}, inflections = {}}
	local root2, root2_imp
	
	if class == '1' then
		present_tense = root .. 'ar'
		past_tense = root .. 'a'
		past_participle = root .. 'a'
		passive_infinitive = root .. 'ast'
		present_participle =  root .. 'ande'
		imperative = link(PAGENAME, PAGENAME) .. '/' .. link(PAGENAME, root .. '')
	end    
	if class == '2' then
		root2, root2_imp = make_root2(root)

		present_tense = root .. 'er'
		past_tense = root2 .. 'te'
		past_participle = root2 .. 't'
		passive_infinitive = root .. 'ast'
		present_participle = root .. 'ande'
		imperative = root2_imp
	end
	if class == '12' or class == '21' then
		root2, root2_imp = make_root2(root)
		
		present_tense = link(PAGENAME, root .. 'ar') .. '/' .. link(PAGENAME, root .. 'er')
		past_tense = link(PAGENAME, root .. 'a') .. '/' .. link(PAGENAME, root2 .. 'te')
		past_participle = link(PAGENAME, root .. 'a') .. '/' .. link(PAGENAME, root2 .. 't')
		passive_infinitive = link(PAGENAME, root .. 'ast') 
		present_participle = link(PAGENAME, root .. 'ande') 
		imperative = link(PAGENAME, PAGENAME) .. '/' .. link(PAGENAME, root .. '')
	end
	if class == '3' then
		root2, root2_imp = make_root2(root)
		length2 = root2:len()
		if root2:sub(length2, length2) == root2:sub(length2-1, length2-1) then
			root3 = root2:sub(1, length2-1)
		else
			root3 = root2
		end
		if PAGENAME:find('[iouyæøå]$') then
			present_tense = PAGENAME .. 'r'
		else
			present_tense = root .. 'er'
		end
		if not root3:find('ng$') and not root3:find('r$') and not root:find('øym') then
			if root3:find('[aeiouyæøå]$') then
				past_tense = root3 .. 'dde'
				past_participle = link(PAGENAME, root3 .. 'tt') .. '/' .. link(PAGENAME, root3 .. 'dd')
			else
				past_tense = root3 .. 'de'
				past_participle = link(PAGENAME, root3 .. 't') .. '/' .. link(PAGENAME, root3 .. 'd')
			end
		else
			past_tense = root3 .. 'de'
			past_participle = root3 .. 't'
		end
		
		passive_infinitive = root .. 'ast'
		present_participle = root .. 'ande'
		imperative = root2_imp
	end
	
	if class == '4' then
		if root:sub(length-1, length-1) == root:sub(length-2, length-2) then
			root2 = root:sub(1, length-2)
			if root:sub(length-1, length-1) == 'n' then -- døm!, but kjenn!
				imperative = link(PAGENAME, root) 
			else
				imperative = link(PAGENAME, root2)
			end
		else
			root2 = root
			imperative = link(PAGENAME, root) 
		end
		present_tense = root .. 'er'
		past_tense = link(PAGENAME, root2 .. 'de') .. '/' .. link(PAGENAME, root2 .. 'te')
		past_participle = root2 .. 't'
		passive_infinitive = root .. 'ast'
		present_participle = root .. 'ande'
	end
	
	table.insert(data.inflections, {label = 'present tense', present_tense})
	table.insert(data.inflections, {label = 'past tense', past_tense})
	table.insert(data.inflections, {label = 'past participle', past_participle})
	if not args['no_st'] then
		table.insert(data.inflections, {label = 'passive infinitive', passive_infinitive})
	end
	if not args['no_prespart'] then
		table.insert(data.inflections, {label = 'present participle', present_participle})
	end
	if not args['no_imp'] then
		table.insert(data.inflections, {label = 'imperative', imperative})
	end
	
	return require("Module:headword").full_headword(data)
end
 
return export