<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.digitalcellulose.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ADe-headword</id>
	<title>Module:De-headword - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.digitalcellulose.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ADe-headword"/>
	<link rel="alternate" type="text/html" href="http://www.digitalcellulose.com/wiki/index.php?title=Module:De-headword&amp;action=history"/>
	<updated>2026-07-03T22:09:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.digitalcellulose.com/wiki/index.php?title=Module:De-headword&amp;diff=99219&amp;oldid=prev</id>
		<title>Adminsuzy: Created page with &quot;local export = {} local pos_functions = {}  local legal_gender = { 	[&quot;m&quot;] = true, 	[&quot;m-s&quot;] = true, 	[&quot;m-p&quot;] = true, 	[&quot;f&quot;] = true, 	[&quot;f-s&quot;] = true, 	[&quot;f-p&quot;] = true, 	[&quot;n&quot;] = t...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.digitalcellulose.com/wiki/index.php?title=Module:De-headword&amp;diff=99219&amp;oldid=prev"/>
		<updated>2018-09-11T21:12:50Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {} local pos_functions = {}  local legal_gender = { 	[&amp;quot;m&amp;quot;] = true, 	[&amp;quot;m-s&amp;quot;] = true, 	[&amp;quot;m-p&amp;quot;] = true, 	[&amp;quot;f&amp;quot;] = true, 	[&amp;quot;f-s&amp;quot;] = true, 	[&amp;quot;f-p&amp;quot;] = true, 	[&amp;quot;n&amp;quot;] = t...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
local pos_functions = {}&lt;br /&gt;
&lt;br /&gt;
local legal_gender = {&lt;br /&gt;
	[&amp;quot;m&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;m-s&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;m-p&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;f&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;f-s&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;f-p&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;n&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;n-s&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;n-p&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;?&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;?-s&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;?-p&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;p&amp;quot;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local gender_names = {&lt;br /&gt;
	[&amp;quot;m&amp;quot;] = &amp;quot;masculine&amp;quot;,&lt;br /&gt;
	[&amp;quot;m-s&amp;quot;] = &amp;quot;masculine&amp;quot;,&lt;br /&gt;
	[&amp;quot;m-p&amp;quot;] = &amp;quot;masculine&amp;quot;,&lt;br /&gt;
	[&amp;quot;f&amp;quot;] = &amp;quot;feminine&amp;quot;,&lt;br /&gt;
	[&amp;quot;f-s&amp;quot;] = &amp;quot;feminine&amp;quot;,&lt;br /&gt;
	[&amp;quot;f-p&amp;quot;] = &amp;quot;feminine&amp;quot;,&lt;br /&gt;
	[&amp;quot;n&amp;quot;] = &amp;quot;neuter&amp;quot;,&lt;br /&gt;
	[&amp;quot;n-s&amp;quot;] = &amp;quot;neuter&amp;quot;,&lt;br /&gt;
	[&amp;quot;n-p&amp;quot;] = &amp;quot;neuter&amp;quot;,&lt;br /&gt;
	[&amp;quot;?&amp;quot;] = &amp;quot;unknown gender&amp;quot;,&lt;br /&gt;
	[&amp;quot;?-s&amp;quot;] = &amp;quot;unknown gender&amp;quot;,&lt;br /&gt;
	[&amp;quot;?-p&amp;quot;] = &amp;quot;unknown gender&amp;quot;,&lt;br /&gt;
	[&amp;quot;p&amp;quot;] = &amp;quot;plural&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legal_verb_classes = {&lt;br /&gt;
	['1'] = true,&lt;br /&gt;
	['2'] = true,&lt;br /&gt;
	['3'] = true,&lt;br /&gt;
	['4'] = true,&lt;br /&gt;
	['5'] = true,&lt;br /&gt;
	['6'] = true,&lt;br /&gt;
	['7'] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;de&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- The main entry point.&lt;br /&gt;
-- This is the only function that can be invoked from a template.&lt;br /&gt;
function export.show(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	PAGENAME = mw.title.getCurrentTitle().text&lt;br /&gt;
	&lt;br /&gt;
	local head = args[&amp;quot;head&amp;quot;]; if head == &amp;quot;&amp;quot; then head = nil end&lt;br /&gt;
	&lt;br /&gt;
	local poscat = frame.args[1] or error(&amp;quot;Part of speech has not been specified. Please pass parameter 1 to the module invocation.&amp;quot;)&lt;br /&gt;
	local class = frame.args[2]; if class == &amp;quot;&amp;quot; then class = nil end&lt;br /&gt;
	&lt;br /&gt;
	local data = {lang = lang, pos_category = poscat, categories = {}, heads = {head}, genders = {}, inflections = {}}&lt;br /&gt;
	&lt;br /&gt;
	if pos_functions[poscat] then&lt;br /&gt;
		pos_functions[poscat](class, args, data)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return&lt;br /&gt;
		require(&amp;quot;Module:headword&amp;quot;).full_headword(data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions.adjectives = function(class, args, data)&lt;br /&gt;
	params = {&lt;br /&gt;
		[1] = {list = &amp;quot;comp&amp;quot;},&lt;br /&gt;
		[2] = {list = &amp;quot;sup&amp;quot;},&lt;br /&gt;
		[&amp;quot;head&amp;quot;] = {},&lt;br /&gt;
	}&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(args, params)&lt;br /&gt;
	data.heads = {args[&amp;quot;head&amp;quot;]}&lt;br /&gt;
	&lt;br /&gt;
	if args[1][1] == '-' then&lt;br /&gt;
		table.insert(data.inflections, {label = 'not comparable'})&lt;br /&gt;
		table.insert(data.categories, 'German uncomparable adjectives')&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args[1] &amp;gt; 0 then&lt;br /&gt;
		for i, form in ipairs(args[1]) do&lt;br /&gt;
			args[1][i] = {term = (form == 'er' and PAGENAME .. 'er' or form),&lt;br /&gt;
				accel = {form = &amp;quot;comparative&amp;quot;}}&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		args[1] = {request = true}&lt;br /&gt;
		table.insert(data.categories, 'de-adj lacking comparative')&lt;br /&gt;
	end&lt;br /&gt;
	args[1].label = &amp;quot;[[Appendix:Glossary#comparative|comparative]]&amp;quot;&lt;br /&gt;
	table.insert(data.inflections, args[1])&lt;br /&gt;
	&lt;br /&gt;
	if #args[2] &amp;gt; 0 then&lt;br /&gt;
		for i, form in ipairs(args[2]) do&lt;br /&gt;
			args[2][i] = {&lt;br /&gt;
				term = 'am [[' ..  (form == 'sten' and PAGENAME .. 'sten' or form) .. ']]',&lt;br /&gt;
				accel = {form = &amp;quot;superlative&amp;quot;}}&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		args[2] = {request = true}&lt;br /&gt;
		table.insert(data.categories, 'de-adj lacking superlative')&lt;br /&gt;
	end&lt;br /&gt;
	args[2].label = &amp;quot;[[Appendix:Glossary#superlative|superlative]]&amp;quot;&lt;br /&gt;
	table.insert(data.inflections, args[2])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions.nouns = function(class, args, data)&lt;br /&gt;
	params = {&lt;br /&gt;
		[1] = {list = 'g', default = '?'},&lt;br /&gt;
		[2] = {list = 'gen',&lt;br /&gt;
			default = (&lt;br /&gt;
				args[1] == 'm' or&lt;br /&gt;
				args[1] == 'm-s' or&lt;br /&gt;
				args[1] == 'n' or&lt;br /&gt;
				args[1] == 'n-s'&lt;br /&gt;
				) and PAGENAME .. 's' or PAGENAME},&lt;br /&gt;
		[3] = {list = 'pl'},&lt;br /&gt;
		[4] = {list = 'dim'},&lt;br /&gt;
		[&amp;quot;head&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = {list = true},&lt;br /&gt;
		[&amp;quot;f&amp;quot;] = {list = true},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if data.pos_category == 'nouns' then&lt;br /&gt;
		params[3].default = PAGENAME .. 'en'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(args, params)&lt;br /&gt;
	data.heads = {args[&amp;quot;head&amp;quot;]}&lt;br /&gt;
	&lt;br /&gt;
	for _, g in ipairs(args[1]) do&lt;br /&gt;
		if legal_gender[g] then&lt;br /&gt;
			table.insert(data.genders, g)&lt;br /&gt;
			table.insert(data.categories, &amp;quot;German &amp;quot; .. gender_names[g] .. &amp;quot; nouns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			error(&amp;quot;Gender “&amp;quot; .. g .. &amp;quot;” is not an valid German gender.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, form in ipairs(args[2]) do&lt;br /&gt;
		args[2][i] = {term = form, accel = {form = &amp;quot;gen|s&amp;quot;}}&lt;br /&gt;
	end&lt;br /&gt;
	args[2].label = &amp;quot;genitive&amp;quot;&lt;br /&gt;
	table.insert(data.inflections, args[2])&lt;br /&gt;
	&lt;br /&gt;
	if args[3][1] == '-' then&lt;br /&gt;
		table.insert(data.inflections, {label = 'no plural'})&lt;br /&gt;
		table.insert(data.categories, 'German uncountable nouns')&lt;br /&gt;
	elseif #args[3] &amp;gt; 0 then&lt;br /&gt;
		for i, form in ipairs(args[3]) do&lt;br /&gt;
			args[3][i] = {term = form, accel = {form = &amp;quot;p&amp;quot;}}&lt;br /&gt;
		end&lt;br /&gt;
		args[3].label = &amp;quot;plural&amp;quot;&lt;br /&gt;
		table.insert(data.inflections, args[3])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args[4] &amp;gt; 0 then&lt;br /&gt;
		for i, form in ipairs(args[4]) do&lt;br /&gt;
			args[4][i] = {&lt;br /&gt;
				term = form,&lt;br /&gt;
				genders = {'n'},&lt;br /&gt;
				accel = {form = &amp;quot;diminutive&amp;quot;, gender = &amp;quot;n&amp;quot;}&lt;br /&gt;
				}&lt;br /&gt;
		end&lt;br /&gt;
		args[4].label = &amp;quot;diminutive&amp;quot;&lt;br /&gt;
		table.insert(data.inflections, args[4])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args.f &amp;gt; 0 then&lt;br /&gt;
		args.f.label = &amp;quot;feminine&amp;quot;&lt;br /&gt;
		table.insert(data.inflections, args.f)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args.m &amp;gt; 0 then&lt;br /&gt;
		args.m.label = &amp;quot;masculine&amp;quot;&lt;br /&gt;
		table.insert(data.inflections, args.m)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions[&amp;quot;proper nouns&amp;quot;] = pos_functions.nouns&lt;br /&gt;
&lt;br /&gt;
function export.detect_type(pr,pa,pp,ps)&lt;br /&gt;
	local args = {&lt;br /&gt;
		type = &amp;quot;&amp;quot;,&lt;br /&gt;
		class = &amp;quot;&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
	local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
	if mw.ustring.match(pr,&amp;quot; &amp;quot;) then&lt;br /&gt;
		pr, prefix = mw.ustring.match(pr, &amp;quot;([^ ]+) (.+)&amp;quot;)&lt;br /&gt;
		prefix = mw.ustring.gsub(prefix, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	pr = mw.ustring.gsub(pr, &amp;quot;e?t$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	pa = mw.ustring.gsub(pa, &amp;quot; .+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	ps = mw.ustring.gsub(ps, &amp;quot; .+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	pp = mw.ustring.gsub(pp, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	pp = mw.ustring.gsub(pp, prefix, &amp;quot;&amp;quot;)&lt;br /&gt;
	pr = mw.ustring.gsub(pr, &amp;quot;ß&amp;quot;, &amp;quot;ss&amp;quot;)&lt;br /&gt;
	pa = mw.ustring.gsub(pa, &amp;quot;ß&amp;quot;, &amp;quot;ss&amp;quot;)&lt;br /&gt;
	pp = mw.ustring.gsub(pp, &amp;quot;ß&amp;quot;, &amp;quot;ss&amp;quot;)&lt;br /&gt;
	ps = mw.ustring.gsub(ps, &amp;quot;ß&amp;quot;, &amp;quot;ss&amp;quot;)&lt;br /&gt;
	local e = mw.ustring.match(pr, &amp;quot;[dt]$&amp;quot;) and &amp;quot;e&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
	if pr .. e .. &amp;quot;te&amp;quot; == pa then&lt;br /&gt;
		args.type = 'weak'&lt;br /&gt;
	else&lt;br /&gt;
		local before, stem_vowel, long = mw.ustring.match(pr, &amp;quot;^(.-)([aeiouäöü]+)([^aeiouäöü]*)$&amp;quot;)&lt;br /&gt;
		long = long or &amp;quot;&amp;quot;&lt;br /&gt;
		local short = long&lt;br /&gt;
		if mw.ustring.len(long) == 1 then&lt;br /&gt;
			short = long .. long&lt;br /&gt;
		elseif mw.ustring.match(long,&amp;quot;^h.$&amp;quot;) then&lt;br /&gt;
			short = mw.ustring.gsub(long,&amp;quot;h(.)&amp;quot;,&amp;quot;%1%1&amp;quot;)&lt;br /&gt;
		elseif mw.ustring.match(long,&amp;quot;^(.)%1&amp;quot;) then&lt;br /&gt;
			long = mw.ustring.sub(long,1,1)&lt;br /&gt;
			short = long .. long&lt;br /&gt;
		end&lt;br /&gt;
		mw.log(pr,pa,pp,ps,before,stem_vowel,short,long)&lt;br /&gt;
		local function check(class, past, participle)&lt;br /&gt;
			participle = participle or past&lt;br /&gt;
			if pa == (before .. past .. long) then&lt;br /&gt;
				if pp == (before .. participle .. long .. &amp;quot;en&amp;quot;) or pp == (&amp;quot;ge&amp;quot; .. before .. participle .. long .. &amp;quot;en&amp;quot;) then&lt;br /&gt;
				args.type = &amp;quot;strong&amp;quot;&lt;br /&gt;
					args.class = type(class) == &amp;quot;string&amp;quot; and class or class()&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			elseif pa == (before .. past .. short) then&lt;br /&gt;
				if pp == (before .. participle .. short .. &amp;quot;en&amp;quot;) or pp == (&amp;quot;ge&amp;quot; .. before .. participle .. short .. &amp;quot;en&amp;quot;) then&lt;br /&gt;
					args.type = &amp;quot;strong&amp;quot;&lt;br /&gt;
					args.class = type(class) == &amp;quot;string&amp;quot; and class or class()&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local function check_stem(class, stem)&lt;br /&gt;
			if mw.ustring.match(pr, stem .. &amp;quot;$&amp;quot;) then&lt;br /&gt;
			args.type = &amp;quot;strong&amp;quot;&lt;br /&gt;
				args.class = class&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local done = false&lt;br /&gt;
		if stem_vowel == &amp;quot;ä&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;3&amp;quot;, &amp;quot;o&amp;quot;, &amp;quot;o&amp;quot;) or check(&amp;quot;6&amp;quot;, &amp;quot;u&amp;quot;, &amp;quot;a&amp;quot;) or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;au&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;2&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;äu&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;2&amp;quot;, &amp;quot;o&amp;quot;) or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;au&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;ei&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;1&amp;quot;, &amp;quot;ie&amp;quot;) or check(&amp;quot;1&amp;quot;, &amp;quot;i&amp;quot;) or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;ei&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;i&amp;quot; then&lt;br /&gt;
			local function distinguish()&lt;br /&gt;
				if ps then&lt;br /&gt;
					if ps == (before .. &amp;quot;ä&amp;quot; .. long .. &amp;quot;e&amp;quot;) then&lt;br /&gt;
						return &amp;quot;4&amp;quot;&lt;br /&gt;
					else&lt;br /&gt;
						return &amp;quot;3&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					error(&amp;quot;Please specify the past subjunctive by passing parameter 4&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			done = check(&amp;quot;3&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;u&amp;quot;) or check(&amp;quot;3&amp;quot;, &amp;quot;i&amp;quot;, &amp;quot;o&amp;quot;) or check(&amp;quot;5&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
			done = done or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;e&amp;quot;) or check(distinguish, &amp;quot;a&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;ie&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;2&amp;quot;, &amp;quot;o&amp;quot;) or check(&amp;quot;5&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;e&amp;quot;) or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;ö&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
		elseif stem_vowel == &amp;quot;ü&amp;quot; then&lt;br /&gt;
			done = check(&amp;quot;2&amp;quot;, &amp;quot;o&amp;quot;) or check(&amp;quot;7&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		if not done then&lt;br /&gt;
			done = check_stem(&amp;quot;2&amp;quot;, &amp;quot;zieh&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;3&amp;quot;, &amp;quot;erlisch&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;3&amp;quot;, &amp;quot;fich&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;3&amp;quot;, &amp;quot;schall&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;4&amp;quot;, &amp;quot;komm&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;4&amp;quot;, &amp;quot;nimm&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;5&amp;quot;, &amp;quot;iss&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;6&amp;quot;, &amp;quot;heb&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;6&amp;quot;, &amp;quot;schwör&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;7&amp;quot;, &amp;quot;geh&amp;quot;)&lt;br /&gt;
				or check_stem(&amp;quot;7&amp;quot;, &amp;quot;hau&amp;quot;)&lt;br /&gt;
			args.type = &amp;quot;irregular&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args.type, args.class&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions.verbs = function(class, args, data)&lt;br /&gt;
	params = {&lt;br /&gt;
		[1] = {list = 'present ='},&lt;br /&gt;
		[2] = {list = 'past ='},&lt;br /&gt;
		[3] = {list = 'past participle ='},&lt;br /&gt;
		[&amp;quot;head&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;type&amp;quot;] = {default = class},&lt;br /&gt;
		[&amp;quot;auxiliary&amp;quot;] = {default = 'haben'},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if class ~= 'weak' or args.type ~= 'weak' then&lt;br /&gt;
		params[4] = {list = 'past subjunctive'}&lt;br /&gt;
	end&lt;br /&gt;
	if class == 'strong' or args.type == 'strong' then&lt;br /&gt;
		params.class = {default = nil}&lt;br /&gt;
	end&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(args, params)&lt;br /&gt;
	data.heads = {args[&amp;quot;head&amp;quot;]}&lt;br /&gt;
	&lt;br /&gt;
	if not args.type then&lt;br /&gt;
		args.type, args.class = detect_type(args[1][1],args[2][1],args[3][1],args[4][1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == 'strong' then&lt;br /&gt;
		if not args.class then&lt;br /&gt;
			table.insert(data.inflections, {label = '[[Appendix:Glossary#strong verb|strong]]'})&lt;br /&gt;
			table.insert(data.categories, 'German strong verbs without classes')&lt;br /&gt;
		elseif legal_verb_classes[args.class] then&lt;br /&gt;
			table.insert(data.inflections, {label = 'class ' .. args.class .. ' [[Appendix:Glossary#strong verb|strong]]'})&lt;br /&gt;
			table.insert(data.categories, 'German class ' .. args.class .. ' strong verbs')&lt;br /&gt;
		else&lt;br /&gt;
			error(&amp;quot;Strong verb class “&amp;quot; .. args.class .. &amp;quot;” is not an valid German class (1-7).&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(data.categories, 'German strong verbs')&lt;br /&gt;
	elseif args.type == 'weak' then&lt;br /&gt;
		table.insert(data.inflections, {label = '[[Appendix:Glossary#weak verb|weak]]'})&lt;br /&gt;
		table.insert(data.categories, 'German weak verbs')&lt;br /&gt;
	elseif args.type == 'irregular' then&lt;br /&gt;
		table.insert(data.inflections, {label = '[[Appendix:Glossary#irregular|irregular]]'})&lt;br /&gt;
		table.insert(data.categories, 'German irregular verbs')&lt;br /&gt;
	elseif not args.type then&lt;br /&gt;
		table.insert(data.categories, 'German verbs without conjugation types')&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;quot;Verb type “&amp;quot; .. args.type .. &amp;quot;” is not an valid German type (“strong” or “weak”).&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args[1] == 0 then&lt;br /&gt;
		args[1] = {request = true}&lt;br /&gt;
	end&lt;br /&gt;
	args[1].label = 'third-person singular simple present'&lt;br /&gt;
	table.insert(data.inflections, args[1])&lt;br /&gt;
	&lt;br /&gt;
	if #args[2] == 0 then&lt;br /&gt;
		args[2] = {request = true}&lt;br /&gt;
	end&lt;br /&gt;
	args[2].label = 'past tense'&lt;br /&gt;
	table.insert(data.inflections, args[2])&lt;br /&gt;
	&lt;br /&gt;
	if #args[3] == 0 then&lt;br /&gt;
		args[3] = {request = true}&lt;br /&gt;
	end&lt;br /&gt;
	args[3].label = 'past participle'&lt;br /&gt;
	table.insert(data.inflections, args[3])&lt;br /&gt;
	&lt;br /&gt;
	if #args[&amp;quot;past subjunctive&amp;quot;] &amp;gt; 0 then&lt;br /&gt;
		args[&amp;quot;past subjunctive&amp;quot;].label = &amp;quot;past subjunctive&amp;quot;&lt;br /&gt;
		table.insert(data.inflections, args[&amp;quot;past subjunctive&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.auxiliary == 'haben' then&lt;br /&gt;
		args.auxiliary = {'haben'}&lt;br /&gt;
		table.insert(data.categories, 'German verbs using haben as auxiliary')&lt;br /&gt;
	elseif args.auxiliary == 'sein' then&lt;br /&gt;
		args.auxiliary = {'sein'}&lt;br /&gt;
		table.insert(data.categories, 'German verbs using sein as auxiliary')&lt;br /&gt;
	elseif args.auxiliary == 'both' then&lt;br /&gt;
		args.auxiliary = {'haben', 'sein'}&lt;br /&gt;
		table.insert(data.categories, 'German verbs using haben and sein as auxiliary')&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;quot;Verb auxiliary “&amp;quot; .. args.auxiliary .. &amp;quot;” is not an valid German auxiliary (“haben”, “sein”, or “both”).&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	args.auxiliary.label = &amp;quot;auxiliary&amp;quot;&lt;br /&gt;
	table.insert(data.inflections, args.auxiliary)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Adminsuzy</name></author>
		
	</entry>
</feed>