Module:nl-verbs

Ut Wikiwurdboek
De neikommende dokumintaasje stiet op Module:nl-verbs/dokumintaasje. [bewurkje]

Oernommen fan en:Module:nl-verbs.

Wurdt noch oanpast.


local m_utilities = require("Module:utilities")
local m_links = require("Module:links")

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

local export = {}

-- 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 infl_type = frame.args[1] or error("Type bûging is net opjûn. Jou a.j.w. parameter 1 by it oanroppen fan 'e module.")
	
	if not inflections[infl_type] then
		error("Unbekend type bûging '" .. infl_type .. "'")
	end
	
	local params = {
		["aux"] = {},
		["aux2"] = {},
		["bot"] = {type = "boolean"},
		["pref"] = {},
		["sep"] = {},
		["trans"] = {},
		["trans2"] = {},
		["vnoun"] = {},
		["vnoung"] = {},
		["vnoun2"] = {},
		-- Jildige ferfryske farianten - PiefPafPier
		["skied"] = {alias_of = "sep"},
		["oerg"] = {alias_of = "trans"},
		["oerg2"] = {alias_of = "trans2"},
	}
	
	for key, val in pairs(inflections[infl_type].params) do
		params[key] = val
	end
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	local data = {forms = {}, title = nil, categories = {}}
	
	inflections[infl_type].func(args, data)
	postprocess(args, data)
	
	if (args["bot"] or "") ~= "" then
		return make_bot_list(data, args["sep"])
	else
		return make_table(data, args["sep"]) .. m_utilities.format_categories(data.categories, lang)
	end
end

function postprocess(args, data)
	-- Verbal noun
	local vnoun = args["vnoun"]
	local vnoun2 = args["vnoun2"]
	
	if vnoun then
		data.forms["vnoun"] = {vnoun, vnoun2}
	end
	
	-- Prefixed and separable
	local pref = args["pref"]
	local sep = args["sep"]
	
	if pref then
		table.insert(data.categories, "Tiidwurden yn it Nederlânsk mei foarheaksel")
		table.insert(data.categories, "Tiidwurden yn it Nederlânsk mei foarheaksel " .. pref .. "-")
		data.title = data.title .. ", mei foarheaksel"
	end
	
	if sep then
		table.insert(data.categories, "Skiedbere tiidwurden yn it Nederlânsk")
		table.insert(data.categories, "Skiedbere tiidwurden yn it Nederlânsk mei " .. sep)
		data.title = data.title .. ", skiedber"
	end
	
	if not pref and not sep then
		table.insert(data.categories, "Normale tiidwurden yn it Nederlânsk")
	end
	
	add_pref(data, pref)
	add_sep(data, sep)
	
	data.aux = args["aux"] or "hebben"
	
	if args["aux"] then
		if args["aux"] == "zijn" then
			require("Module:debug").track("nl-verb/zijn")
		else
			require("Module:debug").track("nl-verb/aux")
		end
	end
	
	if args["aux2"] then
		require("Module:debug").track("nl-verb/aux2")
	end
	
	data.trans = args["trans"]
	
	-- Ferfryske farianten akk, ûnerg, ûnakk en oerg taheakke - PiefPafPier
	if data.trans then
		if data.trans == "akk" or data.trans == "acc" then
			table.insert(data.categories, "Akkusative tiidwurden yn it Nederlânsk")
		elseif data.trans == "erg" then
			table.insert(data.categories, "Ergative tiidwurden yn it Nederlânsk")
		elseif data.trans == "ûnerg" or data.trans == "unerg" then
			table.insert(data.categories, "Net-ergative tiidwurden yn it Nederlânsk")
		elseif data.trans == "ûnakk" or data.trans == "unacc" then
			table.insert(data.categories, "Net-akkusative tiidwurden yn it Nederlânsk")
		else
			error("De parameter \"oerg=\" of \"trans=\" hat in ûnjildige wearde. Jildich binne: akk/acc, erg, ûnerg/unerg, ûnakk/unacc.")
		end
	end
	
	data.trans2 = args["trans2"]
	
	if data.trans2 then
		if data.trans2 == "akk" or data.trans2 == "acc" then
			table.insert(data.categories, "Akkusative tiidwurden yn it Nederlânsk")
		elseif data.trans2 == "erg" then
			table.insert(data.categories, "Ergative tiidwurden yn it Nederlânsk")
		elseif data.trans2 == "ûnerg" or data.trans2 == "unerg" then
			table.insert(data.categories, "Net-ergative tiidwurden yn it Nederlânsk")
		elseif data.trans2 == "ûnakk" or data.trans2 == "unacc" then
			table.insert(data.categories, "Net-akkusative tiidwurden yn it Nederlânsk")
		else
			error("De parameter \"oerg2=\" of \"trans2=\" hat in ûnjildige wearde. Jildich binne: akk/acc, erg, ûnerg/unerg, ûnakk/unacc.")
		end
	end
	
	if not args["trans"] then
		require("Module:debug").track("nl-verb/no trans")
	end
end

-- Add the unstressed prefix to all the verb forms, or
-- if there is no prefix, add ge- to the past participle
function add_pref(data, pref)
	if pref then
		-- Add prefix before every form
		for key, form in pairs(data.forms) do
			for i, subform in ipairs(form) do
				data.forms[key][i] = pref .. subform
			end
		end
	else
		-- Add ge- prefix before past participle
		if data.forms["past_ptc"] then
			for i, subform in ipairs(data.forms["past_ptc"]) do
				-- Place a diaeresis on the initial vowel of the stem if necessary
				if mw.ustring.find(subform, "^[eiu]") and not mw.ustring.find(subform, "^ij") then
					subform = subform:gsub("^e", "ë"):gsub("^i", "ï"):gsub("^u", "ü")
				end
				
				data.forms["past_ptc"][i] = "ge" .. subform
			end
		end
	end
end

-- Add the separable part to all the verb forms
function add_sep(data, sep)
	if not sep then
		return
	end
	
	-- Add main clause forms
	local mainforms = {}
	
	for key, form in pairs(data.forms) do
		if (key:find("^pres_") or key:find("^past_")) and not key:find("_ptc$") then
			mainforms[key .. "_main"] = mw.clone(form)
		end
	end
	
	for key, form in pairs(mainforms) do
		data.forms[key] = form
	end
	
	-- Add separable part to forms
	for key, form in pairs(data.forms) do
		if key:find("_main$") or key:find("^impr_") then
			-- For main-clause finite forms, add the separable part after the form, separated by a space
			for i, subform in ipairs(data.forms[key]) do
				data.forms[key][i] = data.forms[key][i] .. " " .. sep
			end
		else
			-- For all other forms, add the separable part before the form, with no space
			for i, subform in ipairs(data.forms[key]) do
				-- Add a hyphen after the separable part if it ends with the same vowel
				-- that the main/prefixed verb begins with, for verbs like na-apen
				if mw.ustring.find("aeiou", sep:sub(-1)) and sep:sub(-1) == subform:sub(1, 1) then
					subform = sep .. "-" .. subform
				else
					subform = sep .. subform
				end
				
				data.forms[key][i] = subform
			end
		end
	end
end


--[=[
	*** REGULAR VERBS (mostly) ***
]=]--

local function addform(data, key, form, index)
	if data.forms[key] then
		if index then
			table.insert(data.forms[key], index, form)
		else
			table.insert(data.forms[key], form)
		end
	else
		data.forms[key] = {form}
	end
end

-- Conjugate a weak verb
inflections["weak"] = {
	params = {
		[1] = {required = true},
		[2] = {},
		[3] = {},
		["dt"] = {},
		},
	func = function(args, data)
		table.insert(data.categories, "Swakke tiidwurden yn it Nederlânsk")
		data.title = "swak"
		
		local stems = {}
		
		stems["pres"] = args[1] or "{{{1}}}"
		stems["pres_e"] = args[2]
		present(data, stems)
		
		local dt = args["dt"] or (stems["pres_e"]:find("[cfhkpqstx]e$") and "t" or "d")
		
		stems["past"] = stems["pres"]:gsub("([^aeiou])i$", "%1ie") .. dt .. "e"
		past(data, stems)
		
		stems["past_ptc"] = args[3] or make_long(stems["pres"]) .. (stems["pres"]:find("[dt]$") and "" or dt)
		data.forms["past_ptc"] = {stems["past_ptc"]}
		
		if stems["past_ptc"]:find("n$") then
			table.insert(data.categories, "Swakke tiidwurden mei sterke ôfslutende mulwurden yn it Nederlânsk")
			data.title = data.title .. " mei sterk ôfslutend mulwurd"
		end
		
		-- "zeggen" has an irregular past tense alongside the regular one
		if stems["pres"] == "zeg" then
			past(data, {["past"] = "zei", ["past_e"] = "zeide", ["past_t"] = "zeidt"}, 1)
			table.insert(data.categories, "Unregelmjittige swakke tiidwurden yn it Nederlânsk")
			data.title = data.title .. ", ûnregelmjittich"
		end
	end
}

-- Conjugate a weak verb with a past tense in -cht
inflections["weak-cht"] = {
	params = {
		[1] = {required = true},
		[2] = {},
		[3] = {required = true},
		},
	func = function(args, data)
		table.insert(data.categories, "Swakke tiidwurden yn it Nederlânsk (-cht)")
		data.title = "swak mei doetiid op ''-cht''"
		
		local stems = {}
		
		stems["pres"] = args[1] or "{{{1}}}"
		stems["pres_e"] = args[2]
		present(data, stems)
		
		stems["past"] = (args[3] or "{{{3}}}") .. "cht"
		past(data, stems)
		
		stems["past_ptc"] = stems["past"]
		data.forms["past_ptc"] = {stems["past_ptc"]}
	end
}

-- Conjugate a strong verb
inflections["strong"] = {
	params = {
		[1] = {required = true},
		[2] = {required = true},
		[3] = {required = true},
		[4] = {},
		[5] = {},
		[6] = {},
		["class"] = {},
		},
	func = function(args, data)
		local class = args["class"]
		table.insert(data.categories, "Sterke tiidwurden" .. (class and " fan klasse " .. class or "") .. " yn it Nederlânsk")
		data.title = "sterk" .. (class and " klasse " .. class or "")
		
		local stems = {}
		
		stems["pres"] = args[1] or "{{{1}}}"
		stems["pres_e"] = args[4]
		present(data, stems)
		
		stems["past"] = args[2] or "{{{2}}}"
		stems["past_e"] = args[5]
		stems["past_t"] = args[6]
		past(data, stems)
		
		stems["past_ptc"] = args[3] or "{{{3}}}"
		data.forms["past_ptc"] = {stems["past_ptc"]}
		
		-- If the final consonant of the past participle is not n, then it is a weak past participle.
		if not stems["past_ptc"]:find("n$") then
			table.insert(data.categories, "Sterke tiidwurden mei swakke ôfslutende mulwurden yn it Nederlânsk")
			data.title = data.title .. " mei swak ôfslutend mulwurd"
		end
		
		-- "houden" and "snijden" have alternative forms without the final -d
		if stems["pres"] == "houd" then
			addform(data, "pres_indc_1sg", "hou", 1)
			addform(data, "impr_sg", "hou", 1)
			table.insert(data.categories, "Unregelmjittige sterke tiidwurden yn it Nederlânsk")
			data.title = data.title .. ", licht ûnregelmjittich"
		elseif stems["pres"] == "snijd" then
			addform(data, "pres_indc_1sg", "snij", 1)
			addform(data, "impr_sg", "snij", 1)
			table.insert(data.categories, "Unregelmjittige sterke tiidwurden yn it Nederlânsk")
			data.title = data.title .. ", licht ûnregelmjittich"
		-- If the initial or final consonants of the present stem don't match, then this verb is irregular.
		elseif stems["pres"]:match("^([^aeiouyj]*)") ~= stems["past"]:match("^([^aeiouyj]*)") or stems["pres"]:match("([^aeiouyj]*)$") ~= stems["past"]:match("([^aeiouyj]*)$") then
			table.insert(data.categories, "Unregelmjittige sterke tiidwurden yn it Nederlânsk")
			data.title = data.title .. ", ûnregelmjittich"
		end
	end
}

-- Conjugate an irregular verb
inflections["irregular"] = {
	params = {
		[1] = {required = true},
		},
	func = function(args, data)
		local base = args[1] or "zijn"
		
		if irregular[base] then
			irregular[base](data)
		else
			error("Unbekend ûnregelmjittich tiidwurd '" .. base .. "'.")
		end
	end
}


--[=[
	*** IRREGULAR VERB TYPES ***
]=]--

irregular["hebben"] = function(data)
	table.insert(data.categories, "Unregelmjittige swakke tiidwurden yn it Nederlânsk")
	data.title = "swak, ûnregelmjittich"
	
	present(data, {["pres"] = "heb", ["pres_e"] = "hebbe"})
	past(data, {["past"] = "had", ["past_e"] = "hadde"})
	data.forms["past_ptc"] = {"had"}
	
	data.forms["pres_indc_u"] = {"hebt", "heeft"}
	data.forms["pres_indc_3sg"] = {"heeft"}
end

irregular["kunnen"] = function(data)
	table.insert(data.categories, "Preterito-presens-tiidwurden yn it Nederlânsk")
	data.title = "preterito-presens"
	
	present(data, {["pres"] = "kan", ["pres_e"] = "kunne", ["pres_t"] = "kunt"})
	past(data, {["past"] = "kon", ["past_e"] = "konde", ["past_t"] = "kondt"})
	
	addform(data, "pres_indc_jij", "kan")
	addform(data, "pres_indc_u", "kan")
	data.forms["pres_indc_3sg"] = {"kan"}
	
	data.forms["past_ptc"] = {"kund"}
end

irregular["moeten"] = function(data)
	table.insert(data.categories, "Preterito-presens-tiidwurden yn it Nederlânsk")
	data.title = "preterito-presens"
	
	present(data, {["pres"] = "moet"})
	past(data, {["past"] = "moest"})
	data.forms["past_ptc"] = {"moeten"}
end

irregular["mogen"] = function(data)
	table.insert(data.categories, "Preterito-presens-tiidwurden yn it Nederlânsk")
	data.title = "preterito-presens"
	
	present(data, {["pres"] = "mag", ["pres_e"] = "moge", ["pres_t"] = "moogt"})
	past(data, {["past"] = "mocht"})
	
	data.forms["pres_indc_jij"] = {"mag"}
	data.forms["pres_indc_u"] = {"mag"}
	data.forms["pres_indc_3sg"] = {"mag"}
	
	data.forms["past_ptc"] = {"mogen"}
end

irregular["weten"] = function(data)
	table.insert(data.categories, "Preterito-presens-tiidwurden yn it Nederlânsk")
	data.title = "preterito-presens"
	
	present(data, {["pres"] = "weet", ["pres_e"] = "wete"})
	past(data, {["past"] = "wist"})
	data.forms["past_ptc"] = {"weten"}
end

irregular["willen"] = function(data)
	table.insert(data.categories, "Unregelmjittige tiidwurden yn it Nederlânsk")
	data.title = "ûnregelmjittich"
	
	present(data, {["pres"] = "wil", ["pres_e"] = "wille"})
	past(data, {["past"] = "wilde"})
	past(data, {["past"] = "wou", ["past_e"] = "woude", ["past_t"] = "woudt"})
	data.forms["past_ptc"] = {"wild"}
	
	addform(data, "pres_indc_jij", "wil")
	addform(data, "pres_indc_u", "wil")
	data.forms["pres_indc_3sg"] = {"wil"}
end

irregular["zijn"] = function(data)
	table.insert(data.categories, "Unregelmjittige tiidwurden yn it Nederlânsk")
	table.insert(data.categories, "Suppletive tiidwurden yn it Nederlânsk")
	data.title = "ûnregelmjittich, suppletyf"
	
	present(data, {["pres"] = "ben", ["pres_e"] = "zij", ["pres_t"] = "zijt"})
	past(data, {["past"] = "was", ["past_e"] = "ware", ["past_t"] = "waart"})
	data.forms["past_ptc"] = {"weest"}
	
	data.forms["pres_indc_jij"] = {"bent"}
	data.forms["pres_indc_u"] = {"bent", "is"}
	data.forms["pres_indc_3sg"] = {"is"}
	addform(data, "impr_sg", "wees", 1)
	addform(data, "impr_pl", "weest", 1)
end

irregular["zullen"] = function(data)
	table.insert(data.categories, "Preterito-presens-tiidwurden yn it Nederlânsk")
	data.title = "preterito-presens"
	
	present(data, {["pres"] = "zal", ["pres_e"] = "zulle", ["pres_t"] = "zult"})
	past(data, {["past"] = "zou", ["past_e"] = "zoude", ["past_t"] = "zoudt"})
	
	data.forms["pres_indc_jij"] = {"zult", "zal"}
	data.forms["pres_indc_u"] = {"zult", "zal"}
	data.forms["pres_indc_3sg"] = {"zal"}
end


--[=[
	*** HELPER FUNCTIONS ***
]=]--

-- Create regular present-tense forms
function present(data, stems, index)
	if not stems["pres_e"] then
		stems["pres_e"] = stems["pres"] .. "e"
	end
	
	if not stems["pres_t"] then
		if mw.ustring.find(stems["pres"], "t$") then
			stems["pres_t"] = make_long(stems["pres"])
		else
			stems["pres_t"] = make_long(stems["pres"]) .. "t"
		end
	end
	
	addform(data, "pres_indc_1sg", stems["pres"], index)
	addform(data, "pres_indc_jij", stems["pres_t"], index)
	addform(data, "pres_indc_gij", stems["pres_t"], index)
	addform(data, "pres_indc_u"  , stems["pres_t"], index)
	addform(data, "pres_indc_3sg", stems["pres_t"], index)
	addform(data, "pres_indc_pl" , make_long(stems["pres_e"]) .. "n", index)
	addform(data, "pres_subj_sg" , stems["pres_e"], index)
	
	addform(data, "impr_sg", stems["pres"], index)
	addform(data, "impr_pl", stems["pres_t"], index)
	
	addform(data, "infinitive", make_long(stems["pres_e"]) .. "n", index)
	addform(data, "pres_ptc", make_long(stems["pres_e"]) .. "nd", index)
end


-- Create regular past-tense forms
function past(data, stems, index)
	if not stems["past_e"] then
		if mw.ustring.find(stems["past"], "e$") then
			stems["past_e"] = stems["past"]
		else
			stems["past_e"] = stems["past"] .. "e"
		end
	end
	
	if not stems["past_t"] then
		if mw.ustring.find(stems["past"], "[^eio]e$") or mw.ustring.find(stems["past"], "[të]$") then
			stems["past_t"] = stems["past"]
		else
			stems["past_t"] = stems["past"] .. "t"
		end
	end
	
	addform(data, "past_indc_sg"  , stems["past"], index)
	addform(data, "past_indc_gij" , stems["past_t"], index)
	addform(data, "past_indc_pl"  , stems["past_e"] .. "n", index)
	addform(data, "past_subj_sg"  , stems["past_e"], index)
end


-- A small helper function for those few verbs that have a stem ending in a
-- vowel (like gaan, staan, skiën, echoën). This lengthens the stem-final vowel.
function make_long(form)
	return (form:gsub("([^aeiou])([ao])$", "%1%2%2"):gsub("([^aeiou])i$", "%1ie"))
end


-- Make the table
function make_table(data, hasSep)
	local function show_form(form)
		if not form then
			return "—"
		elseif type(form) ~= "table" then
			error("in non-tabelwearde is opjûn yn 'e list fan bûgde foarmen.")
		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" then
			return data.title and " (" .. data.title .. ")" or ""
		else
			return show_form(data.forms[param])
		end
	end
	
	local wikicode = [=[
{| class="mw-collapsible mw-collapsed" style="background-color: #d4d4ff /* fallback */; background-image: linear-gradient(to bottom right, #e0e0ff, #c7c7ff); text-align: center; float: right;"
|- style="background-color: #e0e0ff;"
| colspan="5" style="border-bottom: 1px dotted gray; text-align: left;" | Alle bûgings fan <b>{{{lemma}}}</b>{{{info}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[nammefoarm]]
| colspan="4" | {{{infinitive}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[doelfoarm]]
| colspan="4" | {{{infinitive}}} ]=] .. require("Module:gender and number").format_list({"n"}) .. [=[

|- height: 0.5em"
|
| colspan="2" |]=] .. (hasSep and [=[ || colspan="2" |]=] or "") .. (hasSep and [=[

|- style="background-color: #c7c7ff;"
!
! colspan="2" | [[haadsin]]
! colspan="2" | [[bysin]]
|- style="background-color: #c7c7ff;"
!
! style="min-width: 12em;" | [[notiid]]
! style="min-width: 12em;" | [[doetiid]]
! style="min-width: 12em;" | [[notiid]]
! style="min-width: 12em;" | [[doetiid]]]=] or [=[

|- style="background-color: #c7c7ff;"
!
! style="min-width: 12em;" | [[notiid]]
! style="min-width: 12em;" | [[doetiid]]]=]) .. [=[

|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[earste persoan|1e&nbsp;persoan]]&nbsp;[[inkeldtal]]
| ]=] .. (hasSep and "{{{pres_indc_1sg_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_1sg}}} || {{{past_indc_sg}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[twadde persoan|2e&nbsp;persoan]]&nbsp;[[inkeldtal|ink.]]&nbsp;(<span lang="nl">[[jij#Nederlânsk|jij]]</span>)
| ]=] .. (hasSep and "{{{pres_indc_jij_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_jij}}} || {{{past_indc_sg}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[twadde persoan|2e&nbsp;persoan]]&nbsp;[[inkeldtal|ink.]]&nbsp;(<span lang="nl">[[u#Nederlânsk|u]]</span>)
| ]=] .. (hasSep and "{{{pres_indc_u_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_u}}} || {{{past_indc_sg}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[twadde persoan|2e&nbsp;persoan]]&nbsp;[[inkeldtal|ink.]]&nbsp;(<span lang="nl">[[gij#Nederlânsk|gij]]</span>)
| ]=] .. (hasSep and "{{{pres_indc_gij_main}}} || {{{past_indc_gij_main}}} || " or "") .. [=[{{{pres_indc_gij}}} || {{{past_indc_gij}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[tredde persoan|3e&nbsp;persoan]]&nbsp;[[inkeldtal]]
| ]=] .. (hasSep and "{{{pres_indc_3sg_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_3sg}}} || {{{past_indc_sg}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[meartal]]
| ]=] .. (hasSep and "{{{pres_indc_pl_main}}} || {{{past_indc_pl_main}}} || " or "") .. [=[{{{pres_indc_pl}}} || {{{past_indc_pl}}}
|- height: 0.5em"
|
| colspan="2" |]=] .. (hasSep and [=[ || colspan="2" |]=] or "") .. [=[

|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[mooglikheidsfoarm]]&nbsp;[[inkeldtal|ink.]]<sup>1</sup>
| ]=] .. (hasSep and "{{{pres_subj_sg_main}}} || {{{past_subj_sg_main}}} || " or "") .. [=[{{{pres_subj_sg}}} || {{{past_subj_sg}}}
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[mooglikheidsfoarm]]&nbsp;[[meartal|mt.]]<sup>1</sup>
| ]=] .. (hasSep and "{{{pres_indc_pl_main}}} || {{{past_indc_pl_main}}} || " or "") .. [=[{{{pres_indc_pl}}} || {{{past_indc_pl}}}
|- height: 0.5em"
|
| colspan="2" |]=] .. (hasSep and [=[ || rowspan="5" colspan="2" |]=] or "") .. [=[

|-
! style="background-color: #c7c7ff;" | [[hjittende&nbsp;foarm]]&nbsp;[[inkeldtal|ink.]]
| style="background-color: #e0e0ff;" | {{{impr_sg}}}
| rowspan="2" |
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[hjittende&nbsp;foarm]]&nbsp;[[meartal|mt.]]<sup>1</sup>
| {{{impr_pl}}}
|- height: 0.5em"
|
| colspan="2" |
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[mulwurden]]
| {{{pres_ptc}}} || {{{past_ptc}}}
|- style="background-color: #ffffff;"
| colspan="5" style="text-align: left; font-size: smaller;" | <sup>1)</sup> [[Wikiwurdboek:Glossarium#argaysk|Argaysk]].
|}<div style="float: left;">
* Nammefoarm: {{{infinitive}}}.
* Doetiid inkeldtal: ]=] .. (hasSep and "{{{past_indc_sg_main}}}" or "{{{past_indc_sg}}}") .. "." .. [=[

* Ofslutend mulwurd: {{{past_ptc}}}.</div><div style="clear: both;"></div>]=]
	
	return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end

function make_bot_list(data, hasSep)
	local ret = ""
	
	if hasSep then
		ret = ret .. "* sep=1\n"
	end
	
	for key, form in pairs(data.forms) do
		if type(form) == "table" then
			for key2, subform in ipairs(form) do
				ret = ret .. "* " .. key .. "_" .. key2 .. "=" .. subform .. "\n"
			end
		else
			ret = ret .. "* " .. key .. "=" .. form .. "\n"
		end
	end
	
	return ret
end

return export