<?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%3Aqiv-verb</id>
	<title>Module:qiv-verb - 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%3Aqiv-verb"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:qiv-verb&amp;action=history"/>
	<updated>2026-04-27T10:34:16Z</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:qiv-verb&amp;diff=494915&amp;oldid=prev</id>
		<title>Sware at 11:51, 21 April 2026</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:qiv-verb&amp;diff=494915&amp;oldid=prev"/>
		<updated>2026-04-21T11:51:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:51, 21 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot;&gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local function tooltip(gender)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local function tooltip(gender)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return require(&#039;Module:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getn&lt;/del&gt;&#039;).format_list({gender})&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return require(&#039;Module:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gender and number&lt;/ins&gt;&#039;).format_list({gender})&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:qiv-verb&amp;diff=401812&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local m_u = require(&#039;Module:utilities&#039;) local m_data = require(&#039;Module:qiv-verb/data&#039;)  local sub = mw.ustring.sub local find = mw.ustring.find local match = mw.ustring.match local gmatch = mw.ustring.gmatch local gsub = mw.ustring.gsub local u = mw.ustring.char local split = mw.text.split local gsplit = mw.text.gsplit  local PAGENAME = gsub(mw.title.getCurrentTitle().text, &quot;%s&quot;, &quot;&amp;nbsp;&quot;) local NAMESPACE = mw.title.getCurrentTitle().nsText local lang...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:qiv-verb&amp;diff=401812&amp;oldid=prev"/>
		<updated>2024-12-22T22:16:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local m_u = require(&amp;#039;Module:utilities&amp;#039;) local m_data = require(&amp;#039;Module:qiv-verb/data&amp;#039;)  local sub = mw.ustring.sub local find = mw.ustring.find local match = mw.ustring.match local gmatch = mw.ustring.gmatch local gsub = mw.ustring.gsub local u = mw.ustring.char local split = mw.text.split local gsplit = mw.text.gsplit  local PAGENAME = gsub(mw.title.getCurrentTitle().text, &amp;quot;%s&amp;quot;, &amp;quot; &amp;quot;) local NAMESPACE = mw.title.getCurrentTitle().nsText local lang...&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;
&lt;br /&gt;
local m_u = require(&amp;#039;Module:utilities&amp;#039;)&lt;br /&gt;
local m_data = require(&amp;#039;Module:qiv-verb/data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local sub = mw.ustring.sub&lt;br /&gt;
local find = mw.ustring.find&lt;br /&gt;
local match = mw.ustring.match&lt;br /&gt;
local gmatch = mw.ustring.gmatch&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
local u = mw.ustring.char&lt;br /&gt;
local split = mw.text.split&lt;br /&gt;
local gsplit = mw.text.gsplit&lt;br /&gt;
&lt;br /&gt;
local PAGENAME = gsub(mw.title.getCurrentTitle().text, &amp;quot;%s&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
local NAMESPACE = mw.title.getCurrentTitle().nsText&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;qiv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function detect_decl(root)&lt;br /&gt;
	local subroot = split(root,&amp;quot;-&amp;quot;)&lt;br /&gt;
	for i, _ in ipairs(subroot) do&lt;br /&gt;
		subroot[i] = subroot[i]:gsub(&amp;quot;%-&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		if subroot[i]:match(&amp;quot;[ˀhḥwy]&amp;quot;) and i &amp;lt;= 3 then&lt;br /&gt;
			return &amp;quot;w&amp;quot; .. tostring(i) .. subroot[i], {root} -- weak 1, 2, and 3&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;s&amp;quot;, {root} -- strong&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 parent_args = frame:getParent().args&lt;br /&gt;
	&lt;br /&gt;
	local numbers = {}&lt;br /&gt;
	local decl = {}&lt;br /&gt;
	local root = NAMESPACE == &amp;quot;Template&amp;quot; and &amp;quot;p-r-ḫ&amp;quot; or parent_args[2]&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local stem = NAMESPACE == &amp;quot;Template&amp;quot; and &amp;quot;G&amp;quot; or parent_args[1]&lt;br /&gt;
	&lt;br /&gt;
	if not m_data[root] then&lt;br /&gt;
		if frame.args.decl then&lt;br /&gt;
			decl_type = frame.args.decl&lt;br /&gt;
		else&lt;br /&gt;
			if parent_args.c and parent_args[1] then&lt;br /&gt;
				decl_type = parent_args.c&lt;br /&gt;
				numbers = {parent_args[1]}&lt;br /&gt;
			else&lt;br /&gt;
				decl_type, numbers = detect_decl(root)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args = require(&amp;quot;Module:parameters&amp;quot;).process(parent_args, m_data[decl_type].params, true)&lt;br /&gt;
		&lt;br /&gt;
		if numbers then&lt;br /&gt;
			for i, number in ipairs(numbers) do&lt;br /&gt;
				args[i] = number&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {forms = {}, categories = {}}&lt;br /&gt;
	&lt;br /&gt;
	data.head = parent_args[&amp;quot;head&amp;quot;] or root&lt;br /&gt;
	data.nocat = parent_args[&amp;quot;nocat&amp;quot;] and true or false&lt;br /&gt;
	data.decl_type = decl_type&lt;br /&gt;
	&lt;br /&gt;
	-- Generate the forms&lt;br /&gt;
	if m_data[root] then&lt;br /&gt;
		m_data[root](parent_args, data)&lt;br /&gt;
	else&lt;br /&gt;
		m_data[decl_type](args, data)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- make the table&lt;br /&gt;
	return make_table(data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function make_table(data)&lt;br /&gt;
	&lt;br /&gt;
	local function ordinal(n)&lt;br /&gt;
		return n .. (n==&amp;quot;1&amp;quot; and &amp;quot;st&amp;quot; or n==&amp;quot;2&amp;quot; and &amp;quot;nd&amp;quot; or n==&amp;quot;3&amp;quot; and &amp;quot;rd&amp;quot; or &amp;quot;th&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function tooltip(gender)&lt;br /&gt;
		return require(&amp;#039;Module:getn&amp;#039;).format_list({gender})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function show_form(form)&lt;br /&gt;
		if not form then&lt;br /&gt;
			return &amp;quot;—&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		&lt;br /&gt;
		for key, subform in ipairs(form) do&lt;br /&gt;
			table.insert(ret, subform)&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
		return table.concat(ret, &amp;quot;, &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function link(term)&lt;br /&gt;
		local links = {}&lt;br /&gt;
		for alt in gmatch(term, &amp;quot;([^%s,]+)&amp;quot;) do&lt;br /&gt;
			alt = term == &amp;quot;—&amp;quot; and term or &amp;quot;[[Contionary:&amp;quot; .. alt .. &amp;quot;|&amp;quot; .. alt .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			table.insert(links, alt)&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(links, &amp;quot;, &amp;quot;)&lt;br /&gt;
	end	&lt;br /&gt;
	&lt;br /&gt;
	local function repl(param)&lt;br /&gt;
		if param == &amp;quot;decl_type&amp;quot; then&lt;br /&gt;
			return data.decl_type&lt;br /&gt;
		elseif param == &amp;quot;pagename&amp;quot; and NAMESPACE == &amp;quot;Template&amp;quot; then&lt;br /&gt;
			return &amp;quot;no-&amp;quot;&lt;br /&gt;
		elseif param == &amp;quot;pagename&amp;quot; then&lt;br /&gt;
			return PAGENAME&lt;br /&gt;
		else&lt;br /&gt;
			return show_form(data.forms[param])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function make_forms(data)&lt;br /&gt;
		local numbers = {&amp;quot;s&amp;quot;, &amp;quot;p&amp;quot;}&lt;br /&gt;
		local persons = {&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;}&lt;br /&gt;
		local genders = {&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;in&amp;quot;}&lt;br /&gt;
		local columns = {&amp;quot;top&amp;quot;, &amp;quot;cli&amp;quot;}&lt;br /&gt;
		local others = {&amp;quot;imperative&amp;quot;, &amp;quot;hortative&amp;quot;, &amp;quot;iterative&amp;quot;, &amp;quot;participle&amp;quot;}&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		&lt;br /&gt;
		for _, num in ipairs(numbers) do&lt;br /&gt;
			table.insert(ret, &amp;#039;\n|-\n ! style=&amp;quot;background-color:#4848B7; color:white; width: 10%&amp;quot; rowspan=6 | &amp;#039; .. (num == &amp;quot;s&amp;quot; and &amp;quot;Singular&amp;quot; or &amp;quot;Plural&amp;quot;))&lt;br /&gt;
			for _, person in ipairs(persons) do&lt;br /&gt;
				if person == &amp;quot;3&amp;quot; then&lt;br /&gt;
					table.insert(ret, &amp;#039;\n! rowspan=4 style=&amp;quot;background-color:#BDBDFF; color: black;&amp;quot; | &amp;#039; .. ordinal(person) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
					for _, g in ipairs(genders) do&lt;br /&gt;
						table.insert(ret, &amp;#039;! style=&amp;quot;background-color:#DBDBFF&amp;quot; | &amp;#039; .. tooltip(g))&lt;br /&gt;
						table.insert(ret, &amp;#039;\n|&amp;#039; .. link(show_form(data.forms[columns[1] .. &amp;quot;_&amp;quot; .. person .. &amp;quot;_&amp;quot; .. num .. &amp;quot;_&amp;quot; .. g])))&lt;br /&gt;
						table.insert(ret, &amp;#039;\n|&amp;#039; .. link(show_form(data.forms[columns[2] .. &amp;quot;_&amp;quot; .. person .. &amp;quot;_&amp;quot; .. num .. &amp;quot;_&amp;quot; .. g])) .. &amp;#039;\n|-\n&amp;#039;)&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(ret, &amp;#039;\n! colspan=2 style=&amp;quot;background-color:#BDBDFF; color: black;&amp;quot; | &amp;#039; .. ordinal(person) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
					table.insert(ret, &amp;#039;\n|&amp;#039; .. link(show_form(data.forms[columns[1] .. &amp;quot;_&amp;quot; .. person .. &amp;quot;_&amp;quot; .. num])))&lt;br /&gt;
					table.insert(ret, &amp;#039;\n|&amp;#039; .. link(show_form(data.forms[columns[2] .. &amp;quot;_&amp;quot; .. person .. &amp;quot;_&amp;quot; .. num])) .. &amp;#039;\n|-&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(ret, &amp;#039;\n|- style=&amp;quot;border-top: double&amp;quot;\n&amp;#039;)&lt;br /&gt;
		for _, other in ipairs(others) do&lt;br /&gt;
			table.insert(ret, &amp;#039;! style=&amp;quot;background-color:#000080; color:white&amp;quot; colspan=3 | &amp;#039; .. other .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
			table.insert(ret, &amp;#039;| colspan=2 | &amp;#039; .. link(show_form(data.forms[other])) .. &amp;#039;\n|-\n&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(ret)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local navframe = [=[&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border-collapse: collapse; margin: 0px 0px -1px 0px; padding: 2px; border: 1px solid #aaaaaa; text-align: center; font-size: 95%; overflow: auto; width: 40%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height: 1.6em; font-weight:bold; font-size: 100%; text-align: left; background-color:#efefef; padding-left: 10px; background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#DFDFDF), color-stop(0.6, #E3E3E3)); background-image: -moz-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);  background-image: -o-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);&amp;quot;&amp;gt;&amp;#039;&amp;#039;{{{pagename}}}&amp;#039;&amp;#039; — verb ({{{decl_type}}})&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;font-size: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
	]=]&lt;br /&gt;
	&lt;br /&gt;
	local wikicode = [=[&lt;br /&gt;
{| border=&amp;quot;1px solid #d0d0d0&amp;quot; style=&amp;quot;border-collapse:collapse; background:#F9F9FF; text-align:center; width:100%&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#000080; color:white&amp;quot;&lt;br /&gt;
!  &amp;amp;nbsp; !! colspan=&amp;quot;2&amp;quot; style=&amp;quot;width:15%&amp;quot; | Person !! Topicalized !! Clitic agent&lt;br /&gt;
]=] .. make_forms(data) .. [=[&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;]=]&lt;br /&gt;
	&lt;br /&gt;
	return gsub(navframe .. wikicode, &amp;quot;{{{([a-z0-9_]+)}}}&amp;quot;, repl)&lt;br /&gt;
		   .. (not data.nocat and m_u.format_categories(data.categories, lang) or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>