<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Asdno-headword</id>
	<title>Module:sdno-headword - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Asdno-headword"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:sdno-headword&amp;action=history"/>
	<updated>2026-05-22T20:16:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:sdno-headword&amp;diff=526490&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {} local pos_functions = {}  local match = mw.ustring.match local gsub = mw.ustring.gsub local sub = mw.ustring.sub  local m_links = require(&quot;Module:links&quot;) local m_table = require(&quot;Module:table&quot;) local m_en_util = require(&quot;Module:en-utilities&quot;) local m_hw_util = require(&quot;Module:headword utilities&quot;)  local lang = require(&quot;Module:languages&quot;).getByCode(&quot;sdno&quot;) local langname = lang:getCanonicalName()  local pagename = mw.loadData(&quot;Module:headword/data&quot;).page...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:sdno-headword&amp;diff=526490&amp;oldid=prev"/>
		<updated>2026-05-20T20:26:39Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {} local pos_functions = {}  local match = mw.ustring.match local gsub = mw.ustring.gsub local sub = mw.ustring.sub  local m_links = require(&amp;quot;Module:links&amp;quot;) local m_table = require(&amp;quot;Module:table&amp;quot;) local m_en_util = require(&amp;quot;Module:en-utilities&amp;quot;) local m_hw_util = require(&amp;quot;Module:headword utilities&amp;quot;)  local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;sdno&amp;quot;) local langname = lang:getCanonicalName()  local pagename = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).page...&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 match = mw.ustring.match&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
local sub = mw.ustring.sub&lt;br /&gt;
&lt;br /&gt;
local m_links = require(&amp;quot;Module:links&amp;quot;)&lt;br /&gt;
local m_table = require(&amp;quot;Module:table&amp;quot;)&lt;br /&gt;
local m_en_util = require(&amp;quot;Module:en-utilities&amp;quot;)&lt;br /&gt;
local m_hw_util = require(&amp;quot;Module:headword utilities&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;sdno&amp;quot;)&lt;br /&gt;
local langname = lang:getCanonicalName()&lt;br /&gt;
&lt;br /&gt;
local pagename = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
&lt;br /&gt;
local suffix_categories = {&lt;br /&gt;
	[&amp;quot;adjectives&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;adverbs&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;nouns&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;verbs&amp;quot;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function glossary_link(...)&lt;br /&gt;
	return m_hw_util.glossary_link(...)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function insert_inflection(data, terms, label, accel)&lt;br /&gt;
	m_hw_util.insert_inflection {&lt;br /&gt;
		headdata = data,&lt;br /&gt;
		terms = terms,&lt;br /&gt;
		label = label,&lt;br /&gt;
		accel = accel and {form = accel} or nil,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- The main entry point.&lt;br /&gt;
function export.show(frame)&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 parargs = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
	local params = {&lt;br /&gt;
		[&amp;quot;head&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;nomut&amp;quot;] = {type = &amp;quot;boolean&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if pos_functions[poscat] then&lt;br /&gt;
		for key, val in pairs(pos_functions[poscat].params) do&lt;br /&gt;
			params[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(parargs, params)&lt;br /&gt;
&lt;br /&gt;
	local heads = args.head&lt;br /&gt;
	if #heads == 0 then&lt;br /&gt;
		heads = {pagename}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		lang = lang,&lt;br /&gt;
		pos_category = poscat,&lt;br /&gt;
		categories = {},&lt;br /&gt;
		heads = heads,&lt;br /&gt;
		genders = {},&lt;br /&gt;
		inflections = {},&lt;br /&gt;
		pagename = pagename,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if pos_functions[poscat] then&lt;br /&gt;
		pos_functions[poscat].func(args, data)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return require(&amp;quot;Module:headword&amp;quot;).full_headword(data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
--                                          Nouns                                      --&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local allowed_genders = m_table.listToSet{&lt;br /&gt;
	&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;, &amp;quot;mf&amp;quot;, &amp;quot;mfbysense&amp;quot;, &amp;quot;mfequiv&amp;quot;, &amp;quot;gneut&amp;quot;, &amp;quot;n&amp;quot;,&lt;br /&gt;
	&amp;quot;m-p&amp;quot;, &amp;quot;f-p&amp;quot;, &amp;quot;mf-p&amp;quot;, &amp;quot;mfbysense-p&amp;quot;, &amp;quot;mfequiv-p&amp;quot;, &amp;quot;gneut-p&amp;quot;, &amp;quot;n-p&amp;quot;,&lt;br /&gt;
	&amp;quot;m-s&amp;quot;, &amp;quot;f-s&amp;quot;, &amp;quot;mf-s&amp;quot;, &amp;quot;mfbysense-s&amp;quot;, &amp;quot;mfequiv-s&amp;quot;, &amp;quot;gneut-s&amp;quot;, &amp;quot;n-s&amp;quot;,&lt;br /&gt;
	&amp;quot;?&amp;quot;, &amp;quot;?-p&amp;quot;, &amp;quot;?-s&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Extensible table for default plural endings by gender&lt;br /&gt;
local default_plural_endings = {&lt;br /&gt;
	m = &amp;quot;ar&amp;quot;,&lt;br /&gt;
	f = &amp;quot;ir&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function validate_genders(genders)&lt;br /&gt;
	for _, g in ipairs(genders) do&lt;br /&gt;
		if type(g) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			g = g.spec&lt;br /&gt;
		end&lt;br /&gt;
		if not allowed_genders[g] then&lt;br /&gt;
			error(&amp;quot;Unrecognized gender: &amp;quot; .. g)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Extracts the base gender (&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;, etc.) ignoring number suffixes like &amp;quot;-p&amp;quot; or &amp;quot;-s&amp;quot;&lt;br /&gt;
local function get_base_gender(g)&lt;br /&gt;
	if type(g) == &amp;quot;table&amp;quot; then g = g.spec end&lt;br /&gt;
	g = g:gsub(&amp;quot;%-p$&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%-s$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if g == &amp;quot;mf&amp;quot; then return {&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;} end&lt;br /&gt;
	if default_plural_endings[g] then return {g} end&lt;br /&gt;
	return {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function do_noun(args, data, is_proper)&lt;br /&gt;
	local is_plurale_tantum = false&lt;br /&gt;
	local category_pos = m_en_util.singularize(data.pos_category)&lt;br /&gt;
&lt;br /&gt;
	validate_genders(args[1])&lt;br /&gt;
	data.genders = args[1]&lt;br /&gt;
	&lt;br /&gt;
	-- Check for specific genders and pluralia tantum.&lt;br /&gt;
	local base_genders_present = {}&lt;br /&gt;
	for _, g in ipairs(args[1]) do&lt;br /&gt;
		if type(g) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			g = g.spec&lt;br /&gt;
		end&lt;br /&gt;
		if g:find(&amp;quot;-p$&amp;quot;) then&lt;br /&gt;
			is_plurale_tantum = true&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for _, bg in ipairs(get_base_gender(g)) do&lt;br /&gt;
			base_genders_present[bg] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lemma = data.pagename&lt;br /&gt;
	local plurals = {}&lt;br /&gt;
	&lt;br /&gt;
	if is_plurale_tantum then&lt;br /&gt;
		if args[2][1] then&lt;br /&gt;
			error(&amp;quot;Can&amp;#039;t specify plurals of plurale tantum &amp;quot; .. category_pos)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		plurals = m_hw_util.parse_term_list_with_modifiers {&lt;br /&gt;
			paramname = {2, &amp;quot;pl&amp;quot;},&lt;br /&gt;
			forms = args[2],&lt;br /&gt;
			splitchar = &amp;quot;,&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		-- Check for special plural signals&lt;br /&gt;
		local mode = nil&lt;br /&gt;
		local pl1 = plurals[1]&lt;br /&gt;
		if pl1 and #pl1.term == 1 then&lt;br /&gt;
			mode = pl1.term&lt;br /&gt;
			if mode == &amp;quot;?&amp;quot; or mode == &amp;quot;!&amp;quot; or mode == &amp;quot;-&amp;quot; or mode == &amp;quot;~&amp;quot; then&lt;br /&gt;
				pl1.term = nil&lt;br /&gt;
				if next(pl1) then&lt;br /&gt;
					error((&amp;quot;Can&amp;#039;t specify inline modifiers with plural code &amp;#039;%s&amp;#039;&amp;quot;):format(mode))&lt;br /&gt;
				end&lt;br /&gt;
				table.remove(plurals, 1)  -- Remove the mode parameter&lt;br /&gt;
			elseif mode ~= &amp;quot;+&amp;quot; and mode ~= &amp;quot;#&amp;quot; then&lt;br /&gt;
				error((&amp;quot;Unexpected plural code &amp;#039;%s&amp;#039;&amp;quot;):format(mode))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if args.mut then&lt;br /&gt;
			local mutation = {&lt;br /&gt;
				[&amp;quot;r&amp;quot;] = &amp;quot;radical&amp;quot;, [&amp;quot;l&amp;quot;] = &amp;quot;lenite&amp;quot;, [&amp;quot;e&amp;quot;] = &amp;quot;eclipse&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			table.insert(data.inflections, {label = mutation[args.mut]})&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if is_plurale_tantum then&lt;br /&gt;
			table.insert(data.inflections, {label = &amp;quot;sometimes &amp;quot; .. glossary_link(&amp;quot;plural only&amp;quot;) .. &amp;quot;, in variation&amp;quot;})&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if mode == &amp;quot;?&amp;quot; then&lt;br /&gt;
			table.insert(data.categories, langname .. &amp;quot; &amp;quot; .. data.pos_category .. &amp;quot; with unknown or uncertain plurals&amp;quot;)&lt;br /&gt;
		elseif mode == &amp;quot;!&amp;quot; then&lt;br /&gt;
			table.insert(data.inflections, {label = &amp;quot;plural not attested&amp;quot;})&lt;br /&gt;
			table.insert(data.categories, langname .. &amp;quot; &amp;quot; .. data.pos_category .. &amp;quot; with unattested plurals&amp;quot;)&lt;br /&gt;
			if plurals[1] then&lt;br /&gt;
				error(&amp;quot;Can&amp;#039;t specify any plurals along with unattested plural code &amp;#039;!&amp;#039;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mode == &amp;quot;-&amp;quot; then&lt;br /&gt;
			table.insert(data.categories, langname .. &amp;quot; uncountable &amp;quot; .. data.pos_category)&lt;br /&gt;
			if plurals[1] then&lt;br /&gt;
				table.insert(data.inflections, {label = &amp;quot;usually &amp;quot; .. glossary_link(&amp;quot;uncountable&amp;quot;)})&lt;br /&gt;
				table.insert(data.categories, langname .. &amp;quot; countable &amp;quot; .. data.pos_category)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(data.inflections, {label = glossary_link(&amp;quot;uncountable&amp;quot;)})&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if not plurals[1] and not is_proper then&lt;br /&gt;
				plurals[1] = {term = &amp;quot;+&amp;quot;}&lt;br /&gt;
			end&lt;br /&gt;
			if mode == &amp;quot;~&amp;quot; then&lt;br /&gt;
				table.insert(data.inflections, {label = glossary_link(&amp;quot;countable&amp;quot;) .. &amp;quot; and &amp;quot; .. glossary_link(&amp;quot;uncountable&amp;quot;)})&lt;br /&gt;
				table.insert(data.categories, langname .. &amp;quot; uncountable &amp;quot; .. data.pos_category)&lt;br /&gt;
				table.insert(data.categories, langname .. &amp;quot; countable &amp;quot; .. data.pos_category)&lt;br /&gt;
			elseif plurals[1] then&lt;br /&gt;
				table.insert(data.categories, langname .. &amp;quot; countable &amp;quot; .. data.pos_category)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(data.categories, langname .. &amp;quot; uncountable &amp;quot; .. data.pos_category)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local new_plurals = {}&lt;br /&gt;
		for _, pl in ipairs(plurals) do&lt;br /&gt;
			if pl.term == &amp;quot;+&amp;quot; then&lt;br /&gt;
				local generated_any = false&lt;br /&gt;
				-- Generate default plurals for all matched base genders&lt;br /&gt;
				for bg, _ in pairs(base_genders_present) do&lt;br /&gt;
					table.insert(new_plurals, {term = (lemma:match(&amp;quot;a$&amp;quot;) and lemma:sub(1,-2) or lemma) .. default_plural_endings[bg]})&lt;br /&gt;
					generated_any = true&lt;br /&gt;
				end&lt;br /&gt;
				-- Fallback if no specific gender mapped&lt;br /&gt;
				if not generated_any then&lt;br /&gt;
					table.insert(new_plurals, {term = lemma .. &amp;quot;ar&amp;quot;}) &lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(new_plurals, pl)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		plurals = new_plurals&lt;br /&gt;
&lt;br /&gt;
		insert_inflection(data, plurals, &amp;quot;plural&amp;quot;, &amp;quot;p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if plurals[2] then&lt;br /&gt;
			table.insert(data.categories, langname .. &amp;quot; &amp;quot; .. data.pos_category .. &amp;quot; with multiple plurals&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generalized handler for other gendered forms with specific default suffixes&lt;br /&gt;
	local function process_gender_form(param, label, accel, default_suffix)&lt;br /&gt;
		local forms = m_hw_util.parse_term_list_with_modifiers {&lt;br /&gt;
			paramname = param,&lt;br /&gt;
			forms = args[param],&lt;br /&gt;
			splitchar = &amp;quot;,&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
		if forms[1] then&lt;br /&gt;
			local new_forms = {}&lt;br /&gt;
			for _, f in ipairs(forms) do&lt;br /&gt;
				if f.term == &amp;quot;+&amp;quot; and default_suffix then&lt;br /&gt;
					table.insert(new_forms, {term = lemma .. default_suffix})&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(new_forms, f)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			insert_inflection(data, new_forms, label, accel)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	process_gender_form(&amp;quot;m&amp;quot;, &amp;quot;masculine&amp;quot;, &amp;quot;m&amp;quot;)&lt;br /&gt;
	process_gender_form(&amp;quot;f&amp;quot;, &amp;quot;feminine&amp;quot;, &amp;quot;f&amp;quot;)&lt;br /&gt;
	process_gender_form(&amp;quot;mpl&amp;quot;, &amp;quot;masculine plural&amp;quot;, &amp;quot;m|p&amp;quot;, default_plural_endings[&amp;quot;m&amp;quot;])&lt;br /&gt;
	process_gender_form(&amp;quot;fpl&amp;quot;, &amp;quot;feminine plural&amp;quot;, &amp;quot;f|p&amp;quot;, default_plural_endings[&amp;quot;f&amp;quot;])&lt;br /&gt;
	-- Extensible for new forms like neuter:&lt;br /&gt;
	-- process_gender_form(&amp;quot;n&amp;quot;, &amp;quot;neuter&amp;quot;, &amp;quot;n&amp;quot;)&lt;br /&gt;
	-- process_gender_form(&amp;quot;npl&amp;quot;, &amp;quot;neuter plural&amp;quot;, &amp;quot;n|p&amp;quot;, default_plural_endings[&amp;quot;n&amp;quot;])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_noun_params(is_proper)&lt;br /&gt;
	return {&lt;br /&gt;
		[1] = {list = &amp;quot;g&amp;quot;, disallow_holes = true, required = not is_proper, default = &amp;quot;?&amp;quot;, type = &amp;quot;genders&amp;quot;, flatten = true},&lt;br /&gt;
		[2] = {list = &amp;quot;pl&amp;quot;, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = {list = true},&lt;br /&gt;
		[&amp;quot;f&amp;quot;] = {list = true},&lt;br /&gt;
		[&amp;quot;mpl&amp;quot;] = {list = true},&lt;br /&gt;
		[&amp;quot;fpl&amp;quot;] = {list = true},&lt;br /&gt;
		[&amp;quot;mut&amp;quot;] = {set = {&amp;quot;r&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;e&amp;quot;}}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions[&amp;quot;nouns&amp;quot;] = {&lt;br /&gt;
	params = get_noun_params(),&lt;br /&gt;
	func = do_noun,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pos_functions[&amp;quot;proper nouns&amp;quot;] = {&lt;br /&gt;
	params = get_noun_params(&amp;quot;is proper&amp;quot;),&lt;br /&gt;
	func = function(args, data)&lt;br /&gt;
		do_noun(args, data, &amp;quot;is proper noun&amp;quot;)&lt;br /&gt;
	end,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
--                                 Adjectives                                          --&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function do_adj(args, data)&lt;br /&gt;
	local lemma = data.pagename&lt;br /&gt;
	&lt;br /&gt;
	if args.inv then&lt;br /&gt;
		table.insert(data.inflections, {label = glossary_link(&amp;quot;invariable&amp;quot;)})&lt;br /&gt;
		table.insert(data.categories, langname .. &amp;quot; indeclinable &amp;quot; .. data.pos_category)&lt;br /&gt;
	else&lt;br /&gt;
		local function process_adj_form(param, default_suffix, label, accel)&lt;br /&gt;
			local forms = m_hw_util.parse_term_list_with_modifiers {&lt;br /&gt;
				paramname = param,&lt;br /&gt;
				forms = args[param],&lt;br /&gt;
				splitchar = &amp;quot;,&amp;quot;,&lt;br /&gt;
			}&lt;br /&gt;
			if not forms[1] then&lt;br /&gt;
				forms = {{term = lemma .. default_suffix}}&lt;br /&gt;
			else&lt;br /&gt;
				local new_forms = {}&lt;br /&gt;
				for _, f in ipairs(forms) do&lt;br /&gt;
					if f.term == &amp;quot;+&amp;quot; then&lt;br /&gt;
						table.insert(new_forms, {term = lemma .. default_suffix})&lt;br /&gt;
					else&lt;br /&gt;
						table.insert(new_forms, f)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				forms = new_forms&lt;br /&gt;
			end&lt;br /&gt;
			insert_inflection(data, forms, label, accel)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		process_adj_form(&amp;quot;comp&amp;quot;, &amp;quot;ara&amp;quot;, &amp;quot;comparative&amp;quot;, &amp;quot;comp&amp;quot;)&lt;br /&gt;
		process_adj_form(&amp;quot;sup&amp;quot;, &amp;quot;asta&amp;quot;, &amp;quot;superlative&amp;quot;, &amp;quot;sup&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions[&amp;quot;adjectives&amp;quot;] = {&lt;br /&gt;
	params = {&lt;br /&gt;
		[&amp;quot;comp&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;sup&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;inv&amp;quot;] = {type = &amp;quot;boolean&amp;quot;},&lt;br /&gt;
	},&lt;br /&gt;
	func = do_adj,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
--                                     Verbs                                           --&lt;br /&gt;
-----------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function do_verb(args, data)&lt;br /&gt;
	local lemma = data.pagename&lt;br /&gt;
	&lt;br /&gt;
	if args.irr then&lt;br /&gt;
		table.insert(data.categories, langname .. &amp;quot; irregular verbs&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local function process_verb_form(param, default_suffix, label)&lt;br /&gt;
			local forms = m_hw_util.parse_term_list_with_modifiers {&lt;br /&gt;
				paramname = param,&lt;br /&gt;
				forms = args[param],&lt;br /&gt;
				splitchar = &amp;quot;,&amp;quot;,&lt;br /&gt;
			}&lt;br /&gt;
				&lt;br /&gt;
			if not forms[1] then&lt;br /&gt;
				forms = {{term = lemma .. default_suffix}}&lt;br /&gt;
			else&lt;br /&gt;
				local new_forms = {}&lt;br /&gt;
				for _, f in ipairs(forms) do&lt;br /&gt;
					if f.term == &amp;quot;+&amp;quot; then&lt;br /&gt;
						table.insert(new_forms, {term = lemma .. default_suffix})&lt;br /&gt;
					else&lt;br /&gt;
						table.insert(new_forms, f)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				forms = new_forms&lt;br /&gt;
			end&lt;br /&gt;
			insert_inflection(data, forms, label)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		process_verb_form(&amp;quot;pres&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;present&amp;quot;)&lt;br /&gt;
		process_verb_form(&amp;quot;past&amp;quot;, &amp;quot;adir&amp;quot;, &amp;quot;past&amp;quot;)&lt;br /&gt;
		process_verb_form(&amp;quot;fut&amp;quot;, &amp;quot;ist&amp;quot;, &amp;quot;future&amp;quot;)&lt;br /&gt;
		process_verb_form(&amp;quot;cond&amp;quot;, &amp;quot;adist&amp;quot;, &amp;quot;conditional&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
pos_functions[&amp;quot;verbs&amp;quot;] = {&lt;br /&gt;
	params = {&lt;br /&gt;
		[&amp;quot;pres&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;past&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;cond&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;fut&amp;quot;] = {list = true, disallow_holes = true},&lt;br /&gt;
		[&amp;quot;irr&amp;quot;] = {type = &amp;quot;boolean&amp;quot;},&lt;br /&gt;
	},&lt;br /&gt;
	func = do_verb,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>