<?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%3Asnon-mut-decl</id>
	<title>Module:snon-mut-decl - 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%3Asnon-mut-decl"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;action=history"/>
	<updated>2026-04-09T13:44:24Z</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:snon-mut-decl&amp;diff=493163&amp;oldid=prev</id>
		<title>Melinoë at 18:15, 7 April 2026</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493163&amp;oldid=prev"/>
		<updated>2026-04-07T18:15:51Z</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 18:15, 7 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-l126&quot;&gt;Line 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&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;br&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;br&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 result = frame:expandTemplate{  &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 result = frame:expandTemplate{  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		args {&lt;/ins&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;		require(&amp;quot;Template:Snon-decl-blank-full&amp;quot;)&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;		require(&amp;quot;Template:Snon-decl-blank-full&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&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;		}&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;	return result&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;	return result&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Melinoë</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493162&amp;oldid=prev</id>
		<title>Melinoë at 18:15, 7 April 2026</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493162&amp;oldid=prev"/>
		<updated>2026-04-07T18:15:17Z</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 18:15, 7 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-l126&quot;&gt;Line 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&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;br&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;br&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 result = frame:expandTemplate{  &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 result = frame:expandTemplate{  &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;		require(&quot;Template:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;snon&lt;/del&gt;-decl-blank-full&quot;)&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;		require(&quot;Template:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Snon&lt;/ins&gt;-decl-blank-full&quot;)&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;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;	return result&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;	return result&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Melinoë</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493161&amp;oldid=prev</id>
		<title>Melinoë at 18:14, 7 April 2026</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493161&amp;oldid=prev"/>
		<updated>2026-04-07T18:14:50Z</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 18:14, 7 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-l126&quot;&gt;Line 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&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;br&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;br&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 result = frame:expandTemplate{  &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 result = frame:expandTemplate{  &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;		require(&quot;Template:snon-decl-blank&quot;)&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;		require(&quot;Template:snon-decl-blank&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-full&lt;/ins&gt;&quot;)&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;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;	return result&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;	return result&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Melinoë</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493160&amp;oldid=prev</id>
		<title>Melinoë: Created page with &quot;local export = {}  local yesno = require(&quot;Module:yesno&quot;)  local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local ulower = mw.ustring.lower local umatch = mw.ustring.match local usub = mw.ustring.sub  local GRAVE = &quot;\204\128&quot;  local lang = require(&quot;Module:languages&quot;).getByCode(&quot;cy&quot;) local PAGENAME = mw.loadData(&quot;Module:headword/data&quot;).pagename local MARKER = &quot;&lt;sup&gt;△&lt;/sup&gt;&quot;  local mutation_rules = { 	[&quot;b&quot;] = {&quot;bb&quot;, &quot;m&quot;, &quot;bh&quot;}, 	[&quot;bh&quot;] = {&quot;b&quot;, &quot;m&quot;, &quot;gh&quot;}, 	[&quot;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:snon-mut-decl&amp;diff=493160&amp;oldid=prev"/>
		<updated>2026-04-07T18:14:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local yesno = require(&amp;quot;Module:yesno&amp;quot;)  local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local ulower = mw.ustring.lower local umatch = mw.ustring.match local usub = mw.ustring.sub  local GRAVE = &amp;quot;\204\128&amp;quot;  local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;cy&amp;quot;) local PAGENAME = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename local MARKER = &amp;quot;&amp;lt;sup&amp;gt;△&amp;lt;/sup&amp;gt;&amp;quot;  local mutation_rules = { 	[&amp;quot;b&amp;quot;] = {&amp;quot;bb&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;bh&amp;quot;}, 	[&amp;quot;bh&amp;quot;] = {&amp;quot;b&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;gh&amp;quot;}, 	[&amp;quot;...&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 yesno = require(&amp;quot;Module:yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local toNFC = mw.ustring.toNFC&lt;br /&gt;
local toNFD = mw.ustring.toNFD&lt;br /&gt;
local ulower = mw.ustring.lower&lt;br /&gt;
local umatch = mw.ustring.match&lt;br /&gt;
local usub = mw.ustring.sub&lt;br /&gt;
&lt;br /&gt;
local GRAVE = &amp;quot;\204\128&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;cy&amp;quot;)&lt;br /&gt;
local PAGENAME = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
local MARKER = &amp;quot;&amp;lt;sup&amp;gt;△&amp;lt;/sup&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local mutation_rules = {&lt;br /&gt;
	[&amp;quot;b&amp;quot;] = {&amp;quot;bb&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;bh&amp;quot;},&lt;br /&gt;
	[&amp;quot;bh&amp;quot;] = {&amp;quot;b&amp;quot;, &amp;quot;m&amp;quot;, &amp;quot;gh&amp;quot;},&lt;br /&gt;
	[&amp;quot;c&amp;quot;] = {&amp;quot;g&amp;quot;, &amp;quot;ngh&amp;quot;, &amp;quot;ch&amp;quot;},&lt;br /&gt;
	[&amp;quot;ch&amp;quot;] = {&amp;quot;gh&amp;quot;, &amp;quot;ngh&amp;quot;},&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = {&amp;quot;dd&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;dh&amp;quot;},&lt;br /&gt;
	[&amp;quot;dh&amp;quot;] = {&amp;quot;d&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;gh&amp;quot;},&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = {&amp;quot;gg&amp;quot;, &amp;quot;ng&amp;quot;, &amp;quot;gh&amp;quot;},&lt;br /&gt;
	[&amp;quot;h&amp;quot;] = {&amp;quot;gh&amp;quot;, &amp;quot;nh&amp;quot;, &amp;quot;ch&amp;quot;},&lt;br /&gt;
	[&amp;quot;l&amp;quot;] = {&amp;quot;lh&amp;quot;},&lt;br /&gt;
	[&amp;quot;m&amp;quot;] = {&amp;quot;mh&amp;quot;},&lt;br /&gt;
	[&amp;quot;n&amp;quot;] = {&amp;quot;nh&amp;quot;},&lt;br /&gt;
	[&amp;quot;p&amp;quot;] = {&amp;quot;b&amp;quot;, &amp;quot;mh&amp;quot;, &amp;quot;ph&amp;quot;},&lt;br /&gt;
	[&amp;quot;ph&amp;quot;] = {&amp;quot;bh&amp;quot;, &amp;quot;mh&amp;quot;, &amp;quot;h&amp;quot;},&lt;br /&gt;
	[&amp;quot;r&amp;quot;] = {&amp;quot;rr&amp;quot;, &amp;quot;rh&amp;quot;},&lt;br /&gt;
	[&amp;quot;s&amp;quot;] = {&amp;quot;z&amp;quot;, &amp;quot;sh&amp;quot;},&lt;br /&gt;
	[&amp;quot;t&amp;quot;] = {&amp;quot;d&amp;quot;, &amp;quot;nh&amp;quot;, &amp;quot;th&amp;quot;},&lt;br /&gt;
	[&amp;quot;th&amp;quot;] = {&amp;quot;dh&amp;quot;, &amp;quot;nh&amp;quot;, &amp;quot;ch&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.get_mutation_data(term)&lt;br /&gt;
	local data = {radical = term}&lt;br /&gt;
	&lt;br /&gt;
	local term_lower = term:gsub(&amp;quot;^.[\128-\191]*&amp;quot;, ulower) -- term with lowercase initial&lt;br /&gt;
	data.is_uppercase = term_lower ~= term&lt;br /&gt;
	local normalized = toNFD(term_lower)&lt;br /&gt;
	data.vowel = normalized:match(&amp;quot;^[aeiouøy]&amp;quot;) and true or false&lt;br /&gt;
	&lt;br /&gt;
	if data.vowel then&lt;br /&gt;
		data.final = term_lower&lt;br /&gt;
		data.mut1 = &amp;quot;gh-&amp;quot;&lt;br /&gt;
		data.mut2 = &amp;quot;n-&amp;quot;&lt;br /&gt;
		data.mut3 = &amp;quot;ch-&amp;quot;&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local initial, final, mut&lt;br /&gt;
	for i = 3, 1, -1 do&lt;br /&gt;
		initial = usub(normalized, 1, i)&lt;br /&gt;
		mut = mutation_rules[initial]&lt;br /&gt;
		if mut then&lt;br /&gt;
			final = usub(normalized, i + 1)&lt;br /&gt;
			break&lt;br /&gt;
		elseif i == 1 then&lt;br /&gt;
			error((&amp;quot;no mutation rule found for %s&amp;quot;):format(term))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(mut) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs(mut) do&lt;br /&gt;
			if tonumber(k) then&lt;br /&gt;
				data[&amp;quot;mut&amp;quot; .. k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		data.colloquial = mut.colloquial&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	data.final = toNFC(final)&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function construct_mutation(data, accel_form, initial, override)&lt;br /&gt;
	local normal_mutation&lt;br /&gt;
	if not initial then&lt;br /&gt;
		normal_mutation = nil&lt;br /&gt;
	else&lt;br /&gt;
		normal_mutation = initial .. data.final&lt;br /&gt;
		if data.is_uppercase then&lt;br /&gt;
			normal_mutation = require(&amp;quot;Module:string utilities&amp;quot;).ucfirst(normal_mutation)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local has_override = override&lt;br /&gt;
	if not yesno(override, true) or override == &amp;quot;-&amp;quot; then -- TODO: yesno to be removed.&lt;br /&gt;
		override = nil&lt;br /&gt;
	end&lt;br /&gt;
	local has_irreg_mutation = has_override and override ~= normal_mutation&lt;br /&gt;
	local mutation&lt;br /&gt;
	-- don&amp;#039;t combine the following into A and B or C because `override` may be nil&lt;br /&gt;
	if has_override then&lt;br /&gt;
		mutation = override&lt;br /&gt;
	else&lt;br /&gt;
		mutation = normal_mutation&lt;br /&gt;
	end&lt;br /&gt;
	local marker = has_irreg_mutation and MARKER or &amp;quot;&amp;quot;&lt;br /&gt;
	if mutation then&lt;br /&gt;
		return require(&amp;quot;Module:links&amp;quot;).full_link({lang = lang, accel = {form = accel_form, lemma = data.radical}, term = mutation}) .. marker, true, has_irreg_mutation&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;#039;&amp;#039;unchanged&amp;#039;&amp;#039;&amp;quot; .. marker, false, has_irreg_mutation&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.show(frame)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[1] = {},&lt;br /&gt;
		[&amp;quot;soft&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;nasal&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;aspirate&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;nocat&amp;quot;] = {type = &amp;quot;boolean&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	local parargs = frame:getParent().args&lt;br /&gt;
    local args = require(&amp;quot;Module:parameters&amp;quot;).process(parargs, params)&lt;br /&gt;
	&lt;br /&gt;
	local title = args[1] or PAGENAME&lt;br /&gt;
	local data = export.get_mutation_data(title)&lt;br /&gt;
&lt;br /&gt;
	local soft, has_soft, has_irreg_soft = construct_mutation(data, &amp;quot;soft&amp;quot;, data.mut1, args.soft)&lt;br /&gt;
	local nasal, has_nasal, has_irreg_nasal  = construct_mutation(data, &amp;quot;nasal&amp;quot;, data.mut2, args.nasal)&lt;br /&gt;
	local aspirate, has_aspirate, has_irreg_aspirate = construct_mutation(data, data.vowel and &amp;quot;h-prothesis&amp;quot; or &amp;quot;aspirate&amp;quot;, data.mut3, args.aspirate)&lt;br /&gt;
&lt;br /&gt;
	local result = frame:expandTemplate{ &lt;br /&gt;
		require(&amp;quot;Template:snon-decl-blank&amp;quot;)&lt;br /&gt;
		}&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Melinoë</name></author>
	</entry>
</feed>