Module:nl-verbs
Appearance
- 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 persoan]] [[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 persoan]] [[inkeldtal|ink.]] (<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 persoan]] [[inkeldtal|ink.]] (<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 persoan]] [[inkeldtal|ink.]] (<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 persoan]] [[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]] [[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]] [[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 foarm]] [[inkeldtal|ink.]]
| style="background-color: #e0e0ff;" | {{{impr_sg}}}
| rowspan="2" |
|- style="background-color: #e0e0ff;"
! style="background-color: #c7c7ff;" | [[hjittende foarm]] [[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