Module:nl-verb: difference between revisions

Definition from Wiktionary, the free dictionary
Jump to: navigation, search
(on the template-page itself, don't raise an error if the first parameter is missing -- testing)
Line 5: Line 5:
 
PAGENAME = frame:preprocess("{{PAGENAME}}")
 
PAGENAME = frame:preprocess("{{PAGENAME}}")
 
NAMESPACE = frame:preprocess("{{NAMESPACE}}")
 
NAMESPACE = frame:preprocess("{{NAMESPACE}}")
  +
  +
if NAMESPACE == 'Template' and PAGENAME == 'nl-conj-wk' and not args[1] then
  +
args = {
  +
'{{{1}}}',
  +
'{{{2}}}',
  +
dt = '{{{dt}}}'
  +
}
  +
end
 
 
 
local pres_stem = args[1] or error("The first parameter is missing")
 
local pres_stem = args[1] or error("The first parameter is missing")

Revision as of 04:54, 21 February 2013

The following documentation is located at Module:nl-verb/documentation. [edit]
Useful links: subpage listtransclusionstestcases

This module contains functions for creating inflection tables for Dutch verbs.

The bot User:MewBot uses this module to automatically create entries for verb forms. This is done through the make_bot_list function. If you want to change how the module works and it may affect the parameters or the output generated by this function, please discuss this first, in case your changes prevent the bot from working correctly.


local export = {}
 
function export.weak(frame)
    local args = frame:getParent().args
    PAGENAME = frame:preprocess("{{PAGENAME}}")
    NAMESPACE = frame:preprocess("{{NAMESPACE}}")
 
    if NAMESPACE == 'Template' and PAGENAME == 'nl-conj-wk' and not args[1] then
        args = {
            '{{{1}}}',
            '{{{2}}}',
            dt = '{{{dt}}}'
        }
    end
 
    local pres_stem = args[1] or error("The first parameter is missing")
    local pres_stemT = pres_stem .. (pres_stem:find("t$") and "" or "t")
    local pres_stemE = args[2] or ""; if pres_stemE == "" then pres_stemE = pres_stem .. "e" end
    local dt = args["dt"] or ""; if dt == "" then if pres_stemE:find("[cfhkpqsx]e$") then dt = "t" else dt = "d" end end
    local past_stem = pres_stem .. dt
 
    local forms = {}
 
    -- Present indicative
    forms["pres_indc_1sg"] = pres_stem
    forms["pres_indc_2sg"] = pres_stemT
    forms["pres_indc_gij"] = pres_stemT
    forms["pres_indc_3sg"] = pres_stemT
    forms["pres_indc_pl"]  = pres_stemE .. "n"
 
    -- Past indicative
    forms["past_indc_sg"]  = past_stem .. "e"
    forms["past_indc_gij"] = past_stem .. "e"
    forms["past_indc_pl"]  = past_stem .. "en"
 
    -- Subjunctive
    forms["pres_subj_sg"] = pres_stemE
    forms["past_subj_sg"] = past_stem .. "e"
 
    -- Imperative
    forms["impr_sg"] = pres_stem
    forms["impr_pl"] = pres_stemT
 
    -- Participles
    forms["pres_ptc"] = pres_stemE .. "nd"
    forms["past_ptc"] = args[3] or "ge" .. pres_stem .. (pres_stem:find("[dt]$") and "" or dt)
 
    local sep = args["sep"]
    process_sep(forms, sep)
 
    local title = "<span lang=\"nl\">" .. forms["pres_indc_pl"] .. "</span> (weak)"
    local categories = "[[Category:Dutch weak verbs]]"
 
    linkify(forms)
 
    local aux = args["aux"] or "hebben"
    local aux2 = args["aux2"]
    forms["past_ptc"] = "(" .. link_form(aux) .. (aux2 and "/" .. link_form(aux2) or "") .. ") " .. forms["past_ptc"]
 
    return make_table(forms, title, sep) .. (NAMESPACE == "" and categories or "")
end
 
function export.weak_cht(frame)
    local args = frame:getParent().args
    PAGENAME = frame:preprocess("{{PAGENAME}}")
    NAMESPACE = frame:preprocess("{{NAMESPACE}}")
 
    local pres_stem = args[1] or error("The first parameter is missing")
    local pres_stemT = pres_stem .. (pres_stem:find("t$") and "" or "t")
    local pres_stemE = args[2] or ""; if pres_stemE == "" then pres_stemE = pres_stem .. "e" end
    local past_stem = (args[3] or error("The third parameter is missing")) .. "cht"
 
    local forms = {}
 
    -- Present indicative
    forms["pres_indc_1sg"] = pres_stem
    forms["pres_indc_2sg"] = pres_stemT
    forms["pres_indc_gij"] = pres_stemT
    forms["pres_indc_3sg"] = pres_stemT
    forms["pres_indc_pl"]  = pres_stemE .. "n"
 
    -- Past indicative
    forms["past_indc_sg"]  = past_stem
    forms["past_indc_gij"] = past_stem
    forms["past_indc_pl"]  = past_stem .. "en"
 
    -- Subjunctive
    forms["pres_subj_sg"] = pres_stemE
    forms["past_subj_sg"] = past_stem .. "e"
 
    -- Imperative
    forms["impr_sg"] = pres_stem
    forms["impr_pl"] = pres_stemT
 
    -- Participles
    forms["pres_ptc"] = pres_stemE .. "nd"
    forms["past_ptc"] = args[4] or "ge" .. past_stem
 
    local sep = args["sep"]
    process_sep(forms, sep)
 
    local title = "<span lang=\"nl\">" .. forms["pres_indc_pl"] .. "</span> (weak with past in ''-cht'')"
    local categories = "[[Category:Dutch weak verbs (-cht)]]"
 
    linkify(forms)
 
    local aux = args["aux"] or "hebben"
    local aux2 = args["aux2"]
    forms["past_ptc"] = "(" .. link_form(aux) .. (aux2 and "/" .. link_form(aux2) or "") .. ") " .. forms["past_ptc"]
 
    return make_table(forms, title, sep) .. (NAMESPACE == "" and categories or "")
end
 
function export.strong(frame)
    local args = frame:getParent().args
    PAGENAME = frame:preprocess("{{PAGENAME}}")
    NAMESPACE = frame:preprocess("{{NAMESPACE}}")
 
    local pres_stem = args[1] or error("The first parameter is missing")
    local pres_stemT = pres_stem .. (pres_stem:find("t$") and "" or "t")
    local pres_stemE = args[4] or ""; if pres_stemE == "" then pres_stemE = pres_stem .. "e" end
 
    local past_stem = args[2] or error("The second parameter is missing")
    local past_stemT = args[6] or ""; if past_stemT == "" then past_stemT = past_stem .. (pres_stem:find("t$") and "" or "t") end
    local past_stemE = args[5] or ""; if past_stemE == "" then past_stemE = past_stem .. "e" end
 
    local forms = {}
 
    -- Present indicative
    forms["pres_indc_1sg"] = pres_stem
    forms["pres_indc_2sg"] = pres_stemT
    forms["pres_indc_gij"] = pres_stemT
    forms["pres_indc_3sg"] = pres_stemT
    forms["pres_indc_pl"]  = pres_stemE .. "n"
 
    -- Past indicative
    forms["past_indc_sg"]  = past_stem
    forms["past_indc_gij"] = past_stemT
    forms["past_indc_pl"]  = past_stemE .. "n"
 
    -- Subjunctive
    forms["pres_subj_sg"] = pres_stemE
    forms["past_subj_sg"] = past_stemE
 
    -- Imperative
    forms["impr_sg"] = pres_stem
    forms["impr_pl"] = pres_stemT
 
    -- Participles
    forms["pres_ptc"] = pres_stemE .. "nd"
    forms["past_ptc"] = args[3] or error("The third parameter is missing")
 
    local sep = args["sep"]
    process_sep(forms, sep)
 
    local class = args["class"]
    local title = "<span lang=\"nl\">" .. forms["pres_indc_pl"] .. "</span> (strong" .. (class and " class " .. class or "") .. ")"
    local categories = "[[Category:Dutch" .. (class and " class " .. class or "") .. " strong verbs]]"
 
    linkify(forms)
 
    local aux = args["aux"] or "hebben"
    local aux2 = args["aux2"]
    forms["past_ptc"] = "(" .. link_form(aux) .. (aux2 and "/" .. link_form(aux2) or "") .. ") " .. forms["past_ptc"]
 
    return make_table(forms, title, sep) .. (NAMESPACE == "" and categories or "")
end
 
function export.mixed(frame)
    local args = frame:getParent().args
    PAGENAME = frame:preprocess("{{PAGENAME}}")
    NAMESPACE = frame:preprocess("{{NAMESPACE}}")
 
    local pres_stem = args[1] or error("The first parameter is missing")
    local pres_stemT = pres_stem .. (pres_stem:find("t$") and "" or "t")
    local pres_stemE = args[4] or ""; if pres_stemE == "" then pres_stemE = pres_stem .. "e" end
 
    local past_stem = args[2] or error("The second parameter is missing")
    local past_stemT = args[6] or ""; if past_stemT == "" then past_stemT = past_stem .. (pres_stem:find("t$") and "" or "t") end
    local past_stemE = args[5] or ""; if past_stemE == "" then past_stemE = past_stem .. "e" end
 
    local forms = {}
 
    -- Present indicative
    forms["pres_indc_1sg"] = pres_stem
    forms["pres_indc_2sg"] = pres_stemT
    forms["pres_indc_gij"] = pres_stemT
    forms["pres_indc_3sg"] = pres_stemT
    forms["pres_indc_pl"]  = pres_stemE .. "n"
 
    -- Past indicative
    forms["past_indc_sg"]  = past_stem
    forms["past_indc_gij"] = past_stemT
    forms["past_indc_pl"]  = past_stemE .. "n"
 
    -- Subjunctive
    forms["pres_subj_sg"] = pres_stemE
    forms["past_subj_sg"] = past_stemE
 
    -- Imperative
    forms["impr_sg"] = pres_stem
    forms["impr_pl"] = pres_stemT
 
    -- Participles
    forms["pres_ptc"] = pres_stemE .. "nd"
    forms["past_ptc"] = args[3] or error("The third parameter is missing")
 
    local sep = args["sep"]
    process_sep(forms, sep)
 
    local title = "<span lang=\"nl\">" .. forms["pres_indc_pl"] .. "</span> (mixed)"
    local categories = "[[Category:Dutch mixed verbs]]"
 
    linkify(forms)
 
    local aux = args["aux"] or "hebben"
    local aux2 = args["aux2"]
    forms["past_ptc"] = "(" .. link_form(aux) .. (aux2 and "/" .. link_form(aux2) or "") .. ") " .. forms["past_ptc"]
 
    return make_table(forms, title, sep) .. (NAMESPACE == "" and categories or "")
end
 
function process_sep(forms, sep)
    if not sep then return end
 
    local sepSuf = " " .. sep
 
    forms["pres_indc_1sg_main"] = forms["pres_indc_1sg"] .. sepSuf ; forms["pres_indc_1sg"] = sep .. forms["pres_indc_1sg"]
    forms["pres_indc_2sg_main"] = forms["pres_indc_2sg"] .. sepSuf ; forms["pres_indc_2sg"] = sep .. forms["pres_indc_2sg"]
    forms["pres_indc_gij_main"] = forms["pres_indc_gij"] .. sepSuf ; forms["pres_indc_gij"] = sep .. forms["pres_indc_gij"]
    forms["pres_indc_3sg_main"] = forms["pres_indc_3sg"] .. sepSuf ; forms["pres_indc_3sg"] = sep .. forms["pres_indc_3sg"]
    forms["pres_indc_pl_main"]  = forms["pres_indc_pl"]  .. sepSuf ; forms["pres_indc_pl"]  = sep .. forms["pres_indc_pl"]
 
    forms["past_indc_sg_main"]  = forms["past_indc_sg"]  .. sepSuf ; forms["past_indc_sg"]  = sep .. forms["past_indc_sg"]
    forms["past_indc_gij_main"] = forms["past_indc_gij"] .. sepSuf ; forms["past_indc_gij"] = sep .. forms["past_indc_gij"]
    forms["past_indc_pl_main"]  = forms["past_indc_pl"]  .. sepSuf ; forms["past_indc_pl"]  = sep .. forms["past_indc_pl"]
 
    forms["pres_subj_sg_main"]  = forms["pres_subj_sg"] .. sepSuf  ; forms["pres_subj_sg"] = sep .. forms["pres_subj_sg"]
    forms["past_subj_sg_main"]  = forms["past_subj_sg"] .. sepSuf  ; forms["past_subj_sg"] = sep .. forms["past_subj_sg"]
 
    forms["impr_sg"] = forms["impr_sg"] .. sepSuf
    forms["impr_pl"] = forms["impr_pl"] .. sepSuf
 
    forms["pres_ptc"] = sep .. forms["pres_ptc"]
    forms["past_ptc"] = sep .. forms["past_ptc"]
end
 
function link_form(form)
    if form ~= "" then
        if form == PAGENAME then
            return "<span lang=\"nl\">[[" .. form .. "]]</span>"
        else
            return "<span lang=\"nl\">[[" .. form .. "#Dutch|" .. form .. "]]</span>"
        end
    else
        return "&mdash;"
    end
end
 
function linkify(forms)
    for key, form in pairs(forms) do
        forms[key] = link_form(form)
    end
end
 
function make_table(forms, title, sep)
 
    return [=[
<div class="NavFrame" style="width: ]=] .. (sep and 72 or 42) .. [=[em;">
<div class="NavHead" style="background: #CCCCFF;">Conjugation of ]=] .. title .. [=[</div>
<div class="NavContent">
{| style="width:100%; border:1px solid #CCCCFF; text-align:center; line-height:125%" class="inflection-table" cellspacing="1" cellpadding="3"
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[infinitive]]
| colspan="4" | ]=] .. forms["pres_indc_pl"] .. [=[
 
]=] .. (sep and [=[|- style="background: #E6E6FF;"
|
| colspan="2" style="font-weight: bold;" | [[main&nbsp;clause]]
| colspan="2" style="font-weight: bold;" | [[subordinate&nbsp;clause]]
|- style="background: #E6E6FF;"
| 
| style="width: 25%; font-weight: bold" | [[present&nbsp;tense]]
| style="width: 25%; font-weight: bold" | [[past&nbsp;tense]]
| style="width: 25%; font-weight: bold" | [[present&nbsp;tense]]
| style="width: 25%; font-weight: bold" | [[past&nbsp;tense]]]=] or [=[
 
|- style="background: #E6E6FF;"
| 
| style="width: 50%; font-weight: bold" | [[present&nbsp;tense]]
| style="width: 50%; font-weight: bold" | [[past&nbsp;tense]]]=]) .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[first-person|1st&nbsp;person]]&nbsp;[[singular]]
| ]=] .. (sep and forms["pres_indc_1sg_main"] .. " || " .. forms["past_indc_sg_main"] .. " || " or "") .. forms["pres_indc_1sg"] .. " || " .. forms["past_indc_sg"] .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[second-person|2nd&nbsp;person]]&nbsp;[[singular]]
| ]=] .. (sep and forms["pres_indc_2sg_main"] .. " || " .. forms["past_indc_sg_main"] .. " || " or "") .. forms["pres_indc_2sg"] .. " || " .. forms["past_indc_sg"] .. [=[
 
]=] .. ((forms["pres_indc_gij"] ~= forms["pres_indc_2sg"] or forms["past_indc_gij"] ~= forms["past_indc_sg"]) and [=[|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[second-person|2nd&nbsp;person]]&nbsp;[[singular|sing.]]&nbsp;([[gij#Dutch|gij]])
| ]=] .. (sep and forms["pres_indc_gij_main"] .. " || " .. forms["past_indc_gij_main"] .. " || " or "") .. forms["pres_indc_gij"] .. " || " .. forms["past_indc_gij"] or "") .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[third-person|3rd&nbsp;person]]&nbsp;[[singular]]
| ]=] .. (sep and forms["pres_indc_3sg_main"] .. " || " .. forms["past_indc_sg_main"] .. " || " or "") .. forms["pres_indc_3sg"] .. " || " .. forms["past_indc_sg"] .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[plural]]
| ]=] .. (sep and forms["pres_indc_pl_main"] .. " || " .. forms["past_indc_pl_main"] .. " || " or "") .. forms["pres_indc_pl"] .. " || " .. forms["past_indc_pl"] .. [=[
 
|- style="background: #E6E6FF; height: 0.5em"
|
| colspan="2" |]=] .. (sep and [=[ || colspan="2" |]=] or "") .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[subjunctive]]&nbsp;[[singular|sing.]]<sup>1</sup>
| ]=] .. (sep and forms["pres_subj_sg_main"] .. " || " .. forms["past_subj_sg_main"] .. " || " or "") .. forms["pres_subj_sg"] .. " || " .. forms["past_subj_sg"] .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[subjunctive]]&nbsp;[[plural|plur.]]<sup>1</sup>
| ]=] .. (sep and forms["pres_indc_pl_main"] .. " || " .. forms["past_indc_pl_main"] .. " || " or "") .. forms["pres_indc_pl"] .. " || " .. forms["past_indc_pl"] .. [=[
 
|- style="background: #E6E6FF; height: 0.5em"
|
| colspan="2" |]=] .. (sep and [=[ || rowspan="5" colspan="2" |]=] or "") .. [=[
 
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[imperative]]&nbsp;[[singular|sing.]]
| ]=] .. forms["impr_sg"] .. [=[
 
| rowspan="2" style="background: #E6E6FF;" |
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[imperative]]&nbsp;[[plural|plur.]]<sup>1</sup>
| ]=] .. forms["impr_pl"] .. [=[
 
|- style="background: #E6E6FF; height: 0.5em"
|
| colspan="2" |
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[participles]]
| ]=] .. forms["pres_ptc"] .. " || " .. forms["past_ptc"] .. [=[
 
|- style="background: #E6E6FF;"
| colspan="5" style="text-align:left; vertical-align:top; font-size: smaller; line-height: 1em" | <sup>1)</sup> [[Wiktionary:Glossary#archaic|Archaic]].
|}</div></div>]=]
end
 
return export