Called by {{li-conj-auto}}. Do not use directly.


local m_gender = require("Module:gender and number")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")

local lang = require("Module:languages").getByCode("li")
local export = {}

-- Verbs that take "zeen" in the past participle.
local AUX_ZEEN = {
	"baere",
	"gaon"
}

-- Functions that do the actual inflecting by creating the forms of a basic term.
local inflections = {}
local irregular = {}

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	local parent_args = frame:getParent().args
	local infl_type = parent_args[1] == nil and guess_conjugation(frame) or parent_args[1]
	
	if not inflections[infl_type] then
		error("Unknown inflection type '" .. infl_type .. "'")
	end
	
	local data = {forms = {}, categories = {}}
	data.info = ""
	
	local args = require("Module:parameters").process(parent_args, inflections[infl_type].params)
	
	local word = (mw.title.getCurrentTitle().nsText == "Template" and "blósse" or mw.title.getCurrentTitle().text)
	data.aux = AUX_ZEEN.word and "zeen" or "höbbe"
	
	-- Generate default pronouns
	
	-- Generate the forms
	inflections[infl_type].func(args, data)
	
	return make_table(data)
end

function guess_conjugation(frame)
	-- Strip final -e
	local stem = (mw.title.getCurrentTitle().nsText == "Template" and "blóss" or mw.title.getCurrentTitle().text):sub(1, -2)
	if irregular[stem .. "e"] then
		return "irregular"
	end
	if frame:getParent().args["umlaut"] then
		local final_vowel = stem:sub(-4, -2)
		-- second, third, fifth, sixth
		if final_vowel == "ae" then
			return "second"
		elseif final_vowel == "ei" then
			return "third"
		elseif final_vowel == "ou" then
			return "fifth"
		elseif final_vowel:sub(-2, -1) == "a" then
			return "sixth"
		else
			return "irregular"
		end
	else
		local final = stem:sub(-2, -1)
		-- first, fourth, seventh
		if final:find("[jlnrtw]") then
			return "first"
		elseif final:find("[bdfgkps]") or final == "ch" then
			return "fourth"
		elseif final == "mm" then
			return "seventh"
		else
			return "irregular"
		end
	end
end

inflections["first"] = {
	params = {
		[1] = {},
		[2] = {},
		},
	func = function(args, data)
		local base = mw.title.getCurrentTitle().nsText == "Template" and "-" or mw.title.getCurrentTitle().text
		-- If the final consonant is doubled, simplify it for certain forms
		local single = (base:sub(-3, -3) == base:sub(-2, -2)) and base:sub(1, -3) or base
		
		data.info = " (first conjugation)"
		table.insert(data.categories, "Limburgish first conjugation verbs")
		
		data.forms["inf"] = {base}
		data.forms["ger"] = {base}
		data.forms["pres_p"] = {base .. "ndj"}
		data.forms["past_p"] = {"ge" .. single}
		data.forms["adj"] = {"ge" .. single .. "dje", "ge" .. single .. "djer", "ge" .. single .. "djes"}
		data.forms["adv"] = {"ge" .. single .. "dj", "ge" .. single .. "djelik"}
		
		data.forms["pres_1s_sv"] = {single}
		data.forms["past_1s_sv"] = {single .. "dje"}
		data.forms["sub_1s_sv"] = {base}
		data.forms["pres_1s_vs"] = {single}
		data.forms["past_1s_vs"] = {single .. "dje-n"}
		data.forms["sub_1s_vs"] = {base .. "-n"}
		
		data.forms["pres_2s_sv"] = {single .. "s"}
		data.forms["past_2s_sv"] = {single .. "djes"}
		data.forms["sub_2s_sv"] = {base}
		data.forms["pres_2s_vs"] = {single .. "s"}
		data.forms["past_2s_vs"] = {single .. "djes"}
		data.forms["sub_2s_vs"] = {base .. "r"}
		
		data.forms["pres_3s_sv"] = {single .. "tj"}
		data.forms["past_3s_sv"] = {single .. "dje"}
		data.forms["sub_3s_sv"] = {base}
		data.forms["pres_3s_vs"] = {single .. "tj'r"}
		data.forms["past_3s_vs"] = {single .. "dje"}
		data.forms["sub_3s_vs"] = {base .. "r"}
		
		data.forms["pres_1p_sv"] = {base}
		data.forms["past_1p_sv"] = {single .. "dje"}
		data.forms["sub_1p_sv"] = {base}
		data.forms["pres_1p_vs"] = {single .. "tj"}
		data.forms["past_1p_vs"] = {single .. "dje"}
		data.forms["sub_1p_vs"] = {base}
		
		data.forms["pres_2p_sv"] = {single .. "tj"}
		data.forms["past_2p_sv"] = {single .. "dje"}
		data.forms["sub_2p_sv"] = {base}
		data.forms["pres_2p_vs"] = {single .. "tj"}
		data.forms["past_2p_vs"] = {single .. "dje"}
		data.forms["sub_2p_vs"] = {base .. "tj"}
		
		data.forms["pres_3p_sv"] = {base}
		data.forms["past_3p_sv"] = {single .. "dje"}
		data.forms["sub_3p_sv"] = {base}
		data.forms["pres_3p_vs"] = {base}
		data.forms["past_3p_vs"] = {single .. "dje"}
		data.forms["sub_3p_vs"] = {base .. "r"}
		
		data.forms["noun"] = {"ge" .. single}
		data.forms["imp_sg_imp"] = {single}
		data.forms["imp_sg_pol"] = {single .. "tj"}
		data.forms["imp_du"] = {single .. "tj", base .. "tj"}
		data.forms["imp_pl"] = {single .. "tj"}
		data.forms["incl"] = {base .. "m"}
	end
}
	
inflections["fourth"] = {
	params = {
		[1] = {},
		[2] = {},
		},
	func = function(args, data)
		local base = mw.title.getCurrentTitle().nsText == "Template" and "-" or mw.title.getCurrentTitle().text
		-- If the final consonant is doubled, simplify it for certain forms
		local single = (base:sub(-3, -3) == base:sub(-2, -2)) and base:sub(1, -3) or base
		
		data.info = " (fourth conjugation)"
		table.insert(data.categories, "Limburgish fourth conjugation verbs")
		
		data.forms["inf"] = {base}
		data.forms["ger"] = {base}
		data.forms["pres_p"] = {base .. "ndj"}
		data.forms["past_p"] = {"ge" .. single}
		data.forms["adj"] = {"ge" .. single .. "dje", "ge" .. single .. "djer", "ge" .. single .. "djes"}
		data.forms["adv"] = {"ge" .. single, "ge" .. single .. "djelik"}
		
		data.forms["pres_1s_sv"] = {single}
		data.forms["past_1s_sv"] = {single .. "dje"}
		data.forms["sub_1s_sv"] = {base}
		data.forms["pres_1s_vs"] = {single}
		data.forms["past_1s_vs"] = {single .. "dje-n"}
		data.forms["sub_1s_vs"] = {base .. "-n"}
		
		data.forms["pres_2s_sv"] = {single:sub(-1, -1) == "s" and single or single .. "s"}
		data.forms["past_2s_sv"] = {single .. "djes"}
		data.forms["sub_2s_sv"] = {base}
		data.forms["pres_2s_vs"] = {single:sub(-1, -1) == "s" and single or single .. "s"}
		data.forms["past_2s_vs"] = {single .. "djes"}
		data.forms["sub_2s_vs"] = {base .. "r"}
		
		data.forms["pres_3s_sv"] = {single}
		data.forms["past_3s_sv"] = {single .. "dje"}
		data.forms["sub_3s_sv"] = {base}
		data.forms["pres_3s_vs"] = {single}
		data.forms["past_3s_vs"] = {single .. "dje"}
		data.forms["sub_3s_vs"] = {base .. "r"}
		
		data.forms["pres_1p_sv"] = {base}
		data.forms["past_1p_sv"] = {single .. "dje"}
		data.forms["sub_1p_sv"] = {base}
		data.forms["pres_1p_vs"] = {single .. "tj"}
		data.forms["past_1p_vs"] = {single .. "dje"}
		data.forms["sub_1p_vs"] = {base}
		
		data.forms["pres_2p_sv"] = {single, single .. "tj"}
		data.forms["past_2p_sv"] = {single .. "dje"}
		data.forms["sub_2p_sv"] = {base}
		data.forms["pres_2p_vs"] = {single, single .. "tj"}
		data.forms["past_2p_vs"] = {single .. "dje"}
		data.forms["sub_2p_vs"] = {base .. "tj"}
		
		data.forms["pres_3p_sv"] = {base}
		data.forms["past_3p_sv"] = {single .. "dje"}
		data.forms["sub_3p_sv"] = {base}
		data.forms["pres_3p_vs"] = {base}
		data.forms["past_3p_vs"] = {single .. "dje"}
		data.forms["sub_3p_vs"] = {base .. "r"}
		
		data.forms["noun"] = {"ge" .. single}
		data.forms["imp_sg_imp"] = {single}
		data.forms["imp_sg_pol"] = {single, single .. "tj"}
		data.forms["imp_du"] = {base .. "tj"}
		data.forms["imp_pl"] = {single .. "tj"}
		data.forms["incl"] = {base .. "m"}
	end
}

inflections["seventh"] = {
	params = {
		[1] = {},
		[2] = {},
		},
	func = function(args, data)
		local base = mw.title.getCurrentTitle().nsText == "Template" and "-" or mw.title.getCurrentTitle().text
		-- If the final consonant is doubled, simplify it for certain forms
		local single = (base:sub(-3, -3) == base:sub(-2, -2)) and base:sub(1, -3) or base
		
		data.info = " (seventh conjugation)"
		table.insert(data.categories, "Limburgish seventh conjugation verbs")
		
		data.forms["inf"] = {base}
		data.forms["ger"] = {base}
		data.forms["pres_p"] = {base .. "ndj"}
		data.forms["past_p"] = {"ge" .. single .. "p"}
		data.forms["adj"] = {"ge" .. single .. "pdje", "ge" .. single .. "pdjer", "ge" .. single .. "pdjes"}
		data.forms["adv"] = {"ge" .. single .. "p", "ge" .. single .. "pdjelik"}
		
		data.forms["pres_1s_sv"] = {single}
		data.forms["past_1s_sv"] = {single .. "dje"}
		data.forms["sub_1s_sv"] = {base}
		data.forms["pres_1s_vs"] = {single}
		data.forms["past_1s_vs"] = {single .. "dje-n"}
		data.forms["sub_1s_vs"] = {base .. "-n"}
		
		data.forms["pres_2s_sv"] = {single .. "s"}
		data.forms["past_2s_sv"] = {single .. "djes"}
		data.forms["sub_2s_sv"] = {base}
		data.forms["pres_2s_vs"] = {single .. "s"}
		data.forms["past_2s_vs"] = {single .. "djes"}
		data.forms["sub_2s_vs"] = {base .. "r"}
		
		data.forms["pres_3s_sv"] = {single .. "p"}
		data.forms["past_3s_sv"] = {single .. "dje"}
		data.forms["sub_3s_sv"] = {base}
		data.forms["pres_3s_vs"] = {single .. "p"}
		data.forms["past_3s_vs"] = {single .. "dje"}
		data.forms["sub_3s_vs"] = {base .. "r"}
		
		data.forms["pres_1p_sv"] = {base}
		data.forms["past_1p_sv"] = {single .. "dje"}
		data.forms["sub_1p_sv"] = {base}
		data.forms["pres_1p_vs"] = {single .. "p"}
		data.forms["past_1p_vs"] = {single .. "dje"}
		data.forms["sub_1p_vs"] = {base}
		
		data.forms["pres_2p_sv"] = {single .. "p"}
		data.forms["past_2p_sv"] = {single .. "dje"}
		data.forms["sub_2p_sv"] = {base}
		data.forms["pres_2p_vs"] = {single .. "p"}
		data.forms["past_2p_vs"] = {single .. "dje"}
		data.forms["sub_2p_vs"] = {base .. "tj"}
		
		data.forms["pres_3p_sv"] = {base}
		data.forms["past_3p_sv"] = {single .. "dje"}
		data.forms["sub_3p_sv"] = {base}
		data.forms["pres_3p_vs"] = {base}
		data.forms["past_3p_vs"] = {single .. "dje"}
		data.forms["sub_3p_vs"] = {base .. "r"}
		
		data.forms["noun"] = {"ge" .. single}
		data.forms["imp_sg_imp"] = {single}
		data.forms["imp_sg_pol"] = {single, single .. "p"}
		data.forms["imp_du"] = {single .. "tj", base .. "tj"}
		data.forms["imp_pl"] = {single .. "p"}
		data.forms["incl"] = {base .. "m"}
	end
}

inflections["irregular"] = {
	params = {
		[1] = {},
		[2] = {}
		},
	func = function(args, data)
		local base = args[2] or (mw.title.getCurrentTitle().nsText == "Template" and "zeen" or mw.title.getCurrentTitle().text)
		
		if irregular[base] then
			irregular[base](data)
		else
			error("Unknown irregular verb '" .. base .. "'.")
		end
	end
}

irregular["baere"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"baere"}
	data.forms["ger"] = {"baere"}
	data.forms["pres_p"] = {"baerendj"}
	data.forms["past_p"] = {"gebaore"}
	data.forms["adj"] = {"gebaore", "gebaorer", "gebaores"}
	data.forms["adv"] = {"gebaorelik"}
		
	data.forms["pres_1s_sv"] = {"baer"}
	data.forms["past_1s_sv"] = {"boor"}
	data.forms["sub_1s_sv"] = {"baere"}
	data.forms["pres_1s_vs"] = {"bèr"}
	data.forms["past_1s_vs"] = {"boor"}
	data.forms["sub_1s_vs"] = {"baere-n"}
	
	data.forms["pres_2s_sv"] = {"bèrs"}
	data.forms["past_2s_sv"] = {"boors"}
	data.forms["sub_2s_sv"] = {"baere"}
	data.forms["pres_2s_vs"] = {"bèrs"}
	data.forms["past_2s_vs"] = {"boors"}
	data.forms["sub_2s_vs"] = {"bèrrer"}
		
	data.forms["pres_3s_sv"] = {"bèrtj"}
	data.forms["past_3s_sv"] = {"boor"}
	data.forms["sub_3s_sv"] = {"baere"}
	data.forms["pres_3s_vs"] = {"bèrtj'r"}
	data.forms["pres_3s_vs_pron"] = ""
	data.forms["past_3s_vs"] = {"boor"}
	data.forms["sub_3s_vs"] = {"bèrrer"}
	
	data.forms["pres_1p_sv"] = {"baere"}
	data.forms["past_1p_sv"] = {"bore"}
	data.forms["sub_1p_sv"] = {"baere"}
	data.forms["pres_1p_vs"] = {"bèrtj"}
	data.forms["past_1p_vs"] = {"boortj"}
	data.forms["sub_1p_vs"] = {"bèrre"}
	
	data.forms["pres_2p_sv"] = {"baertj"}
	data.forms["past_2p_sv"] = {"boortj"}
	data.forms["sub_2p_sv"] = {"baere"}
	data.forms["pres_2p_vs"] = {"baertj"}
	data.forms["past_2p_vs"] = {"boortj"}
	data.forms["sub_2p_vs"] = {"bèrretj"}
		
	data.forms["pres_3p_sv"] = {"baere"}
	data.forms["past_3p_sv"] = {"bore"}
	data.forms["sub_3p_sv"] = {"baere"}
	data.forms["pres_3p_vs"] = {"baere"}
	data.forms["past_3p_vs"] = {"bore"}
	data.forms["sub_3p_vs"] = {"bèrrer"}
	
	data.forms["noun"] = {"gebèr"}
	data.forms["imp_sg_imp"] = {"baer"}
	data.forms["imp_sg_pol"] = {"bèrtj"}
	data.forms["imp_du"] = {"bèr"}
	data.forms["imp_pl"] = {"baertj"}
	data.forms["incl"] = {"baerem"}
end

irregular["bèdzje"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"bèdzje"}
	data.forms["ger"] = {"bèdzje"}
	data.forms["pres_p"] = {"bèdzjendje"}
	data.forms["past_p"] = {"gebótsj"}
	data.forms["adj"] = {"gebótsj", "gebódzje", "gebódzjer", "gebódzjes"}
	data.forms["adv"] = {"gebódzjelik"}
		
	data.forms["pres_1s_sv"] = {"bètsj"}
	data.forms["past_1s_sv"] = {"batsj"}
	data.forms["sub_1s_sv"] = {"bèdzje"}
	data.forms["pres_1s_vs"] = {"bètsj"}
	data.forms["past_1s_vs"] = {"batsj"}
	data.forms["sub_1s_vs"] = {"bèdzje-n"}
	
	data.forms["pres_2s_sv"] = {"bèdzjes"}
	data.forms["past_2s_sv"] = {"badzjes"}
	data.forms["sub_2s_sv"] = {"bèdzje"}
	data.forms["pres_2s_vs"] = {"bèdzjes"}
	data.forms["past_2s_vs"] = {"badzjes"}
	data.forms["sub_2s_vs"] = {"bèdzjer"}
		
	data.forms["pres_3s_sv"] = {"bètsj"}
	data.forms["past_3s_sv"] = {"batsj"}
	data.forms["sub_3s_sv"] = {"bèdzje"}
	data.forms["pres_3s_vs"] = {"bètsj"}
	data.forms["past_3s_vs"] = {"batsj"}
	data.forms["sub_3s_vs"] = {"bèdzjer"}
	
	data.forms["pres_1p_sv"] = {"bèdzje"}
	data.forms["past_1p_sv"] = {"badzje"}
	data.forms["sub_1p_sv"] = {"bèdzje"}
	data.forms["pres_1p_vs"] = {"bètsj"}
	data.forms["past_1p_vs"] = {"batsj"}
	data.forms["sub_1p_vs"] = {"bèdzje"}
	
	data.forms["pres_2p_sv"] = {"bètsj"}
	data.forms["past_2p_sv"] = {"batsj"}
	data.forms["sub_2p_sv"] = {"bèdzje"}
	data.forms["pres_2p_vs"] = {"bètsj"}
	data.forms["past_2p_vs"] = {"batsj"}
	data.forms["sub_2p_vs"] = {"bèdzjetj"}
		
	data.forms["pres_3p_sv"] = {"bèdzje"}
	data.forms["past_3p_sv"] = {"badzje"}
	data.forms["sub_3p_sv"] = {"bèdzje"}
	data.forms["pres_3p_vs"] = {"bèdzje"}
	data.forms["past_3p_vs"] = {"badzje"}
	data.forms["sub_3p_vs"] = {"bèdzjer"}
	
	data.forms["noun"] = {"gebótsj"}
	data.forms["imp_sg_imp"] = {"bètsj"}
	data.forms["imp_sg_pol"] = {"bötsj"}
	data.forms["imp_du"] = {"buuetsj"}
	data.forms["imp_pl"] = {"boeatsj"}
	data.forms["incl"] = {"bötsjem"}
end

irregular["doon"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"doon"}
	data.forms["ger"] = {"doon"}
	data.forms["pres_p"] = {"donendje"}
	data.forms["past_p"] = {"gedaon"}
	data.forms["adj"] = {"gedaon", "gedaone", "gedaoner", "gedaones"}
	data.forms["adv"] = {"gedäöndjelik"}
		
	data.forms["pres_1s_sv"] = {"doon"}
	data.forms["past_1s_sv"] = {"di-j"}
	data.forms["sub_1s_sv"] = {"daon"}
	data.forms["pres_1s_vs"] = {"doon"}
	data.forms["past_1s_vs"] = {"di-j"}
	data.forms["sub_1s_vs"] = {"daon"}
	
	data.forms["pres_2s_sv"] = {"deis"}
	data.forms["past_2s_sv"] = {"di-js"}
	data.forms["sub_2s_sv"] = {"daons"}
	data.forms["pres_2s_vs"] = {"deis"}
	data.forms["past_2s_vs"] = {"di-js"}
	data.forms["sub_2s_vs"] = {"daons"}
		
	data.forms["pres_3s_sv"] = {"deitj"}
	data.forms["past_3s_sv"] = {"di-j"}
	data.forms["sub_3s_sv"] = {"daontj"}
	data.forms["pres_3s_vs"] = {"deitj'r"}
	data.forms["pres_3s_vs_pron"] = ""
	data.forms["past_3s_vs"] = {"di-j"}
	data.forms["sub_3s_vs"] = {"daontj'r"}
	data.forms["sub_3s_vs_pron"] = ""
	
	data.forms["pres_1p_sv"] = {"doon"}
	data.forms["past_1p_sv"] = {"di-jje"}
	data.forms["sub_1p_sv"] = {"daone"}
	data.forms["pres_1p_vs"] = {"doontj"}
	data.forms["past_1p_vs"] = {"di-jtj"}
	data.forms["sub_1p_vs"] = {"daontj"}
	
	data.forms["pres_2p_sv"] = {"doontj"}
	data.forms["past_2p_sv"] = {"di-j"}
	data.forms["sub_2p_sv"] = {"daontj"}
	data.forms["pres_2p_vs"] = {"doontj"}
	data.forms["past_2p_vs"] = {"di-j", "di-jtj"}
	data.forms["sub_2p_vs"] = {"daontj"}
		
	data.forms["pres_3p_sv"] = {"doon"}
	data.forms["past_3p_sv"] = {"di-jje"}
	data.forms["sub_3p_sv"] = {"daone"}
	data.forms["pres_3p_vs"] = {"doon"}
	data.forms["past_3p_vs"] = {"di-jje"}
	data.forms["sub_3p_vs"] = {"daone"}
	
	data.forms["noun"] = {"gedoons"}
	data.forms["imp_sg_imp"] = {"dooch"}
	data.forms["imp_sg_pol"] = {"dootj"}
	data.forms["imp_du"] = {"doon"}
	data.forms["imp_pl"] = {"doontj"}
	data.forms["incl"] = {"daonem"}
end

irregular["dönke"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"dönke"}
	data.forms["ger"] = {"dönke"}
	data.forms["pres_p"] = {"dönkendje"}
	data.forms["past_p"] = {"gedóch"}
	data.forms["adj"] = {"gedóch", "gedóchtje", "gedóchtjer", "gedóchtjes"}
	data.forms["adv"] = {"gedóch", "gedóchtjelik"}
		
	data.forms["pres_1s_sv"] = {"dönk"}
	data.forms["past_1s_sv"] = {"dóch"}
	data.forms["sub_1s_sv"] = {"tönke"}
	data.forms["pres_1s_vs"] = {"dönk"}
	data.forms["past_1s_vs"] = {"dóch"}
	data.forms["sub_1s_vs"] = {"tönke-n"}
	
	data.forms["pres_2s_sv"] = {"dönks"}
	data.forms["past_2s_sv"] = {"dóchs"}
	data.forms["sub_2s_sv"] = {"tönks"}
	data.forms["pres_2s_vs"] = {"dönks"}
	data.forms["past_2s_vs"] = {"dóchs"}
	data.forms["sub_2s_vs"] = {"tönks"}
		
	data.forms["pres_3s_sv"] = {"dönk"}
	data.forms["past_3s_sv"] = {"dóch"}
	data.forms["sub_3s_sv"] = {"tönk"}
	data.forms["pres_3s_vs"] = {"dönk"}
	data.forms["past_3s_vs"] = {"dóch"}
	data.forms["sub_3s_vs"] = {"tönk"}

	data.forms["pres_1p_sv"] = {"dönke"}
	data.forms["past_1p_sv"] = {"dóchte"}
	data.forms["sub_1p_sv"] = {"tönke"}
	data.forms["pres_1p_vs"] = {"dönke"}
	data.forms["past_1p_vs"] = {"dóchte"}
	data.forms["sub_1p_vs"] = {"tönktj"}
	
	data.forms["pres_2p_sv"] = {"tönk"}
	data.forms["past_2p_sv"] = {"dóch"}
	data.forms["sub_2p_sv"] = {"tönk"}
	data.forms["pres_2p_vs"] = {"tönk"}
	data.forms["past_2p_vs"] = {"dóch"}
	data.forms["sub_2p_vs"] = {"tönketj"}
		
	data.forms["pres_3p_sv"] = {"dönke"}
	data.forms["past_3p_sv"] = {"dóchte"}
	data.forms["sub_3p_sv"] = {"tönke"}
	data.forms["pres_3p_vs"] = {"dönke"}
	data.forms["past_3p_vs"] = {"dóchte"}
	data.forms["sub_3p_vs"] = {"tönke"}
	
	data.forms["noun"] = {"gedönk"}
	data.forms["imp_sg_imp"] = {"duuch"}
	data.forms["imp_sg_pol"] = {"duutj"}
	data.forms["imp_du"] = {"duuetj"}
	data.forms["imp_pl"] = {"duutj"}
	data.forms["incl"] = {"dönkem"}
end

irregular["gaon"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	table.insert(data.categories, "Limburgish suppletive verbs")
	data.info = " (irregular, suppletive)"

	data.forms["inf"] = {"gaon"}
	data.forms["ger"] = {"gaon"}
	data.forms["pres_p"] = {"gäöndje"}
	data.forms["past_p"] = {"gegange"}
	data.forms["adj"] = {"gegange", "geganger", "geganges"}
	data.forms["adv"] = {"gegäöndjelik"}
		
	data.forms["pres_1s_sv"] = {"gaon"}
	data.forms["past_1s_sv"] = {"góng"}
	data.forms["sub_1s_sv"] = {"gank"}
	data.forms["pres_1s_vs"] = {"gaon"}
	data.forms["past_1s_vs"] = {"góng"}
	data.forms["sub_1s_vs"] = {"gank"}
	
	data.forms["pres_2s_sv"] = {"geis"}
	data.forms["past_2s_sv"] = {"gónks"}
	data.forms["sub_2s_sv"] = {"ganks"}
	data.forms["pres_2s_vs"] = {"geis"}
	data.forms["past_2s_vs"] = {"gónks"}
	data.forms["sub_2s_vs"] = {"ganks"}
		
	data.forms["pres_3s_sv"] = {"geitj"}
	data.forms["past_3s_sv"] = {"góng"}
	data.forms["sub_3s_sv"] = {"gank"}
	data.forms["pres_3s_vs"] = {"geitj'r"}
	data.forms["past_3s_vs"] = {"góng"}
	data.forms["sub_3s_vs"] = {"gank"}

	data.forms["pres_1p_sv"] = {"gaon"}
	data.forms["past_1p_sv"] = {"gónge"}
	data.forms["sub_1p_sv"] = {"gange"}
	data.forms["pres_1p_vs"] = {"gaontj"}
	data.forms["past_1p_vs"] = {"gónk"}
	data.forms["sub_1p_vs"] = {"gank"}
	
	data.forms["pres_2p_sv"] = {"gaontj"}
	data.forms["past_2p_sv"] = {"góng"}
	data.forms["sub_2p_sv"] = {"gank"}
	data.forms["pres_2p_vs"] = {"gaontj"}
	data.forms["past_2p_vs"] = {"gónk"}
	data.forms["sub_2p_vs"] = {"gank"}
		
	data.forms["pres_3p_sv"] = {"gaon"}
	data.forms["past_3p_sv"] = {"gónge"}
	data.forms["sub_3p_sv"] = {"gange"}
	data.forms["pres_3p_vs"] = {"gaon"}
	data.forms["past_3p_vs"] = {"gónge"}
	data.forms["sub_3p_vs"] = {"gange"}
	
	data.forms["noun"] = {"gegaon"}
	data.forms["imp_sg_imp"] = {"gank"}
	data.forms["imp_sg_pol"] = {"gank"}
	data.forms["imp_du"] = {"gènk"}
	data.forms["imp_pl"] = {"gank"}
	data.forms["incl"] = {"gaonem"}
end

irregular["lieje"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"lieje"}
	data.forms["ger"] = {"lieje"}
	data.forms["pres_p"] = {"liejendj"}
	data.forms["past_p"] = {"geleeje"}
	data.forms["adj"] = {"geleeje", "geleejer", "geleejes"}
	data.forms["adv"] = {"geleejelik"}
		
	data.forms["pres_1s_sv"] = {"liej"}
	data.forms["past_1s_sv"] = {"leej"}
	data.forms["sub_1s_sv"] = {"lieje"}
	data.forms["pres_1s_vs"] = {"liej"}
	data.forms["past_1s_vs"] = {"leej"}
	data.forms["sub_1s_vs"] = {"lieje-n"}
	
	data.forms["pres_2s_sv"] = {"lietsj"}
	data.forms["past_2s_sv"] = {"leejs"}
	data.forms["sub_2s_sv"] = {"lieje"}
	data.forms["pres_2s_vs"] = {"lietsj"}
	data.forms["past_2s_vs"] = {"leejs"}
	data.forms["sub_2s_vs"] = {"liejer"}
		
	data.forms["pres_3s_sv"] = {"lietj"}
	data.forms["past_3s_sv"] = {"leej"}
	data.forms["sub_3s_sv"] = {"lieje"}
	data.forms["pres_3s_vs"] = {"lietj'r"}
	data.forms["past_3s_vs"] = {"leej"}
	data.forms["sub_3s_vs"] = {"liejer"}

	data.forms["pres_1p_sv"] = {"lieje"}
	data.forms["past_1p_sv"] = {"leeje"}
	data.forms["sub_1p_sv"] = {"lieje"}
	data.forms["pres_1p_vs"] = {"lietj"}
	data.forms["past_1p_vs"] = {"leetj"}
	data.forms["sub_1p_vs"] = {"lieje"}
	
	data.forms["pres_2p_sv"] = {"lietj"}
	data.forms["past_2p_sv"] = {"leej"}
	data.forms["sub_2p_sv"] = {"lieje"}
	data.forms["pres_2p_vs"] = {"lietj"}
	data.forms["past_2p_vs"] = {"leetj"}
	data.forms["sub_2p_vs"] = {"lieëtj"}
		
	data.forms["pres_3p_sv"] = {"lieje"}
	data.forms["past_3p_sv"] = {"leeje"}
	data.forms["sub_3p_sv"] = {"lieje"}
	data.forms["pres_3p_vs"] = {"lieje"}
	data.forms["past_3p_vs"] = {"leeje"}
	data.forms["sub_3p_vs"] = {"liejer"}
	
	data.forms["noun"] = {"geliej"}
	data.forms["imp_sg_imp"] = {"liej"}
	data.forms["imp_sg_pol"] = {"lietj"}
	data.forms["imp_du"] = {"lieëtj"}
	data.forms["imp_pl"] = {"lietj"}
	data.forms["incl"] = {"lieëm"}
end

irregular["zeen"] = function(data)
	error("Ambiguous conjugation: please specify zeen-1 (to see) or zeen-2 (to be)")
end

irregular["zeen-1"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	data.info = " (irregular)"

	data.forms["inf"] = {"zeen"}
	data.forms["ger"] = {"zeen"}
	data.forms["pres_p"] = {"zeendje"}
	data.forms["past_p"] = {"gezeen"}
	data.forms["adj"] = {"gezeen", "gezene", "gezener", "gezenes"}
	data.forms["adv"] = {"gezenelik"}
		
	data.forms["pres_1s_sv"] = {"zeen"}
	data.forms["past_1s_sv"] = {"zoog", "zaag"}
	data.forms["sub_1s_sv"] = {"zene"}
	data.forms["pres_1s_vs"] = {"zeen"}
	data.forms["past_1s_vs"] = {"zoog", "zaag"}
	data.forms["sub_1s_vs"] = {"zene-n"}
	
	data.forms["pres_2s_sv"] = {"zuus"}
	data.forms["past_2s_sv"] = {"zoogs", "zaags"}
	data.forms["sub_2s_sv"] = {"zene"}
	data.forms["pres_2s_vs"] = {"zuus"}
	data.forms["past_2s_vs"] = {"zoogs", "zaags"}
	data.forms["sub_2s_vs"] = {"zener"}
		
	data.forms["pres_3s_sv"] = {"zuutj"}
	data.forms["past_3s_sv"] = {"zoog", "zaag"}
	data.forms["sub_3s_sv"] = {"zene"}
	data.forms["pres_3s_vs"] = {"zuutj'r"}
	data.forms["past_3s_vs"] = {"zoog", "zaag"}
	data.forms["sub_3s_vs"] = {"zener"}

	data.forms["pres_1p_sv"] = {"zeen"}
	data.forms["past_1p_sv"] = {"zoge", "zage"}
	data.forms["sub_1p_sv"] = {"zene"}
	data.forms["pres_1p_vs"] = {"zeentj"}
	data.forms["past_1p_vs"] = {"zoge", "zage"}
	data.forms["sub_1p_vs"] = {"zene"}
	
	data.forms["pres_2p_sv"] = {"zuutj"}
	data.forms["past_2p_sv"] = {"zoog", "zaag"}
	data.forms["sub_2p_sv"] = {"zene"}
	data.forms["pres_2p_vs"] = {"zuutj"}
	data.forms["past_2p_vs"] = {"zoog", "zaag"}
	data.forms["sub_2p_vs"] = {"zenetj"}
		
	data.forms["pres_3p_sv"] = {"zeen"}
	data.forms["past_3p_sv"] = {"zoge", "zage"}
	data.forms["sub_3p_sv"] = {"zene"}
	data.forms["pres_3p_vs"] = {"zeen"}
	data.forms["past_3p_vs"] = {"leeje"}
	data.forms["sub_3p_vs"] = {"zener"}
	
	data.forms["noun"] = {"gezeen"}
	data.forms["imp_sg_imp"] = {"zuug"}
	data.forms["imp_sg_pol"] = {"zuutj"}
	data.forms["imp_du"] = {"zuuetj"}
	data.forms["imp_pl"] = {"zuutj"}
	data.forms["incl"] = {"zenem"}
end

irregular["zeen-2"] = function(data)
	table.insert(data.categories, "Limburgish irregular verbs")
	table.insert(data.categories, "Limburgish suppletive verbs")
	data.info = " (highly irregular, suppletive)"
	data.aux = "zeen"

	data.forms["inf"] = {"zeen", "waeze"}
	data.forms["ger"] = {"zeen"}
	data.forms["pres_p"] = {"?"}
	data.forms["past_p"] = {"gewaes"}
	data.forms["adj"] = {"gewaes", "gewaeze", "gewaezer", "gewaezes"}
	data.forms["adv"] = {"gewaezelik"}
		
	data.forms["pres_1s_sv"] = {"bön"}
	data.forms["past_1s_sv"] = {"woor", "waas", "waar"}
	data.forms["sub_1s_sv"] = {"bönne"}
	data.forms["pres_1s_vs"] = {"bön"}
	data.forms["past_1s_vs"] = {"woor", "waas", "waar"}
	data.forms["sub_1s_vs"] = {"bönne-n"}
	
	data.forms["pres_2s_sv"] = {"bös"}
	data.forms["past_2s_sv"] = {"woors", "waas", "waars"}
	data.forms["sub_2s_sv"] = {"bönne"}
	data.forms["pres_2s_vs"] = {"bös"}
	data.forms["past_2s_vs"] = {"woors", "waas", "waars"}
	data.forms["sub_2s_vs"] = {"bonner"}
		
	data.forms["pres_3s_sv"] = {"is"}
	data.forms["past_3s_sv"] = {"woor", "waas", "waar"}
	data.forms["sub_3s_sv"] = {"bönne"}
	data.forms["pres_3s_vs"] = {"is"}
	data.forms["past_3s_vs"] = {"woor", "waas", "waar"}
	data.forms["sub_3s_vs"] = {"bönner"}

	data.forms["pres_1p_sv"] = {"zeen"}
	data.forms["past_1p_sv"] = {"wore", "ware"}
	data.forms["sub_1p_sv"] = {"bönne"}
	data.forms["pres_1p_vs"] = {"zeetj"}
	data.forms["past_1p_vs"] = {"woortj"}
	data.forms["sub_1p_vs"] = {"bönne"}
	
	data.forms["pres_2p_sv"] = {"zeetj", "zeentj"}
	data.forms["past_2p_sv"] = {"woortj", "waartj"}
	data.forms["sub_2p_sv"] = {"bönne"}
	data.forms["pres_2p_vs"] = {"zeetj", "zeentj"}
	data.forms["past_2p_vs"] = {"woortj", "waartj"}
	data.forms["sub_2p_vs"] = {"bönneetj"}
		
	data.forms["pres_3p_sv"] = {"zeen", "zeent"}
	data.forms["past_3p_sv"] = {"wore", "ware"}
	data.forms["sub_3p_sv"] = {"bönne"}
	data.forms["pres_3p_vs"] = {"zeen"}
	data.forms["past_3p_vs"] = {"wore", "ware"}
	data.forms["sub_3p_vs"] = {"bönner"}
	
	data.forms["noun"] = {"gezeen"}
	data.forms["imp_sg_imp"] = {"bön"}
	data.forms["imp_sg_pol"] = {"zeetj", "zeentj"}
	data.forms["imp_du"] = {"eertj"}
	data.forms["imp_pl"] = {"zeetj", "zeentj"}
	data.forms["incl"] = {"bönnem"}
end

-- Make the table
function make_table(data)
	local function show_form(form)
		if not form then
			return "—"
		end
		
		local ret = {}
		
		for key, subform in ipairs(form) do
			table.insert(ret, m_links.full_link({lang = lang, term = subform}))
		end
			
		return table.concat(ret, ", ")
	end
	
	local function repl(param)
		if param == "lemma" then
			return m_links.full_link({lang = lang, alt = mw.title.getCurrentTitle().text}, "term")
		elseif param == "info" or param == "aux" then
			return data[param]
		elseif param == "n" then
			return m_gender.format_list({"n"})
		else
			return show_form(data.forms[param])
		end
	end
	
	local wikicode = [=[
<div class="NavFrame">
<div class="NavHead" style="text-align: left">Montfortian conjugation of {{{lemma}}}{{{info}}}</div>
<div class="NavContent">
{| border="1px solid #cdcdcd" style="border-collapse:collapse;background:#FEFEFE;width:100%;text-align:center;" class="inflection-table"
|-
! rowspan=2 style="background:#C0C0C0" | non-finite forms
! style="background:#C0C0C0" | infinitive
! style="background:#C0C0C0" | gerund
! style="background:#C0C0C0" | present participle
! style="background:#C0C0C0" | past participle
! style="background:#C0C0C0" | adjective
! style="background:#C0C0C0" | adverb
|-
| (tö) {{{inf}}}
| 't {{{ger}}} {{{n}}}
| {{{pres_p}}}
| {{{aux}}} {{{past_p}}}
| {{{adj}}}
| {{{adv}}}
|-
! rowspan=2 style="background:#C0C0C0" | number & tense
! colspan=3 style="background:#C0C0C0" | [[w:V2 word order|verb-second order]]
! colspan=3 style="background:#C0C0C0" | verb-first order
|-
! style="background:#C0C0C0" | present
! style="background:#C0C0C0" | past
! style="background:#C0C0C0" | subjunctive
! style="background:#C0C0C0" | present
! style="background:#C0C0C0" | past
! style="background:#C0C0C0" | subjunctive
|-
! style="background:#c0cfe4" | first person singular
| {{{pres_1s_sv}}}
| {{{past_1s_sv}}}
| {{{sub_1s_sv}}}
| {{{pres_1s_vs}}}
| {{{past_1s_vs}}}
| {{{sub_1s_vs}}}
|-
! style="background:#c0cfe4" | second person singular
| {{{pres_2s_sv}}}
| {{{past_2s_sv}}}
| {{{sub_2s_sv}}}
| {{{pres_2s_vs}}}
| {{{past_2s_vs}}}
| {{{sub_2s_vs}}}
|-
! style="background:#c0cfe4" | third person singular
| {{{pres_3s_sv}}}
| {{{past_3s_sv}}}
| {{{sub_3s_sv}}}
| {{{pres_3s_vs}}}
| {{{past_3s_vs}}}
| {{{sub_3s_vs}}}
|-
! style="background:#c0cfe4" | first person plural
| {{{pres_1p_sv}}}
| {{{past_1p_sv}}}
| {{{sub_1p_sv}}}
| {{{pres_1p_vs}}}
| {{{past_1p_vs}}}
| {{{sub_1p_vs}}}
|-
! style="background:#c0cfe4" | second person plural
| {{{pres_2p_sv}}}
| {{{past_2p_sv}}}
| {{{sub_2p_sv}}}
| {{{pres_2p_vs}}}
| {{{past_2p_vs}}}
| {{{sub_2p_vs}}}
|-
! style="background:#c0cfe4" | third person plural
| {{{pres_3p_sv}}}
| {{{past_3p_sv}}}
| {{{sub_3p_sv}}}
| {{{pres_3p_vs}}}
| {{{past_3p_vs}}}
| {{{sub_3p_vs}}}
|-
! rowspan=2 style="background:#C0C0C0" | other forms
! style="background:#C0C0C0" | noun
! style="background:#C0C0C0" | imperative singular impolite
! style="background:#C0C0C0" | imperative singular polite
! style="background:#C0C0C0" | imperative dual
! style="background:#C0C0C0" | imperative plural
! style="background:#C0C0C0" | inclusive
|-
| 't {{{noun}}} {{{n}}}
| {{{imp_sg_imp}}}!
| {{{imp_sg_pol}}}!
| {{{imp_du}}}!
| {{{imp_pl}}}!
| {{{incl}}}
|}</div></div>]=]
	
	return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang)
end

return export