Module:nn-verb-reg

From Wiktionary, the free dictionary
Jump to navigation Jump to search

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