<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://petitplanet.wiki/Module:Th-rm?action=history&amp;feed=atom</id>
	<title>Module:Th-rm - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://petitplanet.wiki/Module:Th-rm?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://petitplanet.wiki/Module:Th-rm?action=history"/>
	<updated>2026-10-27T22:03:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22849&amp;oldid=prev</id>
		<title>ReisuDesign at 18:00, 2 September 2026</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22849&amp;oldid=prev"/>
		<updated>2026-09-02T18:00:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;amp;diff=22849&amp;amp;oldid=22848&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22848&amp;oldid=prev</id>
		<title>ReisuDesign at 17:58, 2 September 2026</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22848&amp;oldid=prev"/>
		<updated>2026-09-02T17:58:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;amp;diff=22848&amp;amp;oldid=22845&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22845&amp;oldid=prev</id>
		<title>ReisuDesign at 17:27, 2 September 2026</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22845&amp;oldid=prev"/>
		<updated>2026-09-02T17:27:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;amp;diff=22845&amp;amp;oldid=22843&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22843&amp;oldid=prev</id>
		<title>ReisuDesign: Created page with &quot;local p = {}  local U = mw.ustring local gsub = U.gsub local find = U.find local sub = U.sub local match = U.match local len = U.len  local INITIAL = { 	[&#039;ก&#039;] = &#039;k&#039;, 	[&#039;ข&#039;] = &#039;kh&#039;, [&#039;ฃ&#039;] = &#039;kh&#039;, [&#039;ค&#039;] = &#039;kh&#039;, [&#039;ฅ&#039;] = &#039;kh&#039;, [&#039;ฆ&#039;] = &#039;kh&#039;, 	[&#039;ง&#039;] = &#039;ng&#039;, 	[&#039;จ&#039;] = &#039;ch&#039;, [&#039;ฉ&#039;] = &#039;ch&#039;, [&#039;ช&#039;] = &#039;ch&#039;, 	[&#039;ซ&#039;] = &#039;s&#039;, 	[&#039;ฌ&#039;] = &#039;ch&#039;, 	[&#039;ญ&#039;] = &#039;y&#039;, 	[&#039;ฎ&#039;] = &#039;d&#039;, 	[&#039;ฏ&#039;] = &#039;t&#039;, 	[&#039;ฐ&#039;] = &#039;th&#039;, [&#039;ฑ&#039;] = &#039;th&#039;, [&#039;ฒ&#039;] = &#039;th&#039;, 	[&#039;ณ&#039;] = &#039;n&#039;, 	[&#039;ด&#039;] = &#039;d&#039;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Th-rm&amp;diff=22843&amp;oldid=prev"/>
		<updated>2026-09-02T17:26:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}  local U = mw.ustring local gsub = U.gsub local find = U.find local sub = U.sub local match = U.match local len = U.len  local INITIAL = { 	[&amp;#039;ก&amp;#039;] = &amp;#039;k&amp;#039;, 	[&amp;#039;ข&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฃ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ค&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฅ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฆ&amp;#039;] = &amp;#039;kh&amp;#039;, 	[&amp;#039;ง&amp;#039;] = &amp;#039;ng&amp;#039;, 	[&amp;#039;จ&amp;#039;] = &amp;#039;ch&amp;#039;, [&amp;#039;ฉ&amp;#039;] = &amp;#039;ch&amp;#039;, [&amp;#039;ช&amp;#039;] = &amp;#039;ch&amp;#039;, 	[&amp;#039;ซ&amp;#039;] = &amp;#039;s&amp;#039;, 	[&amp;#039;ฌ&amp;#039;] = &amp;#039;ch&amp;#039;, 	[&amp;#039;ญ&amp;#039;] = &amp;#039;y&amp;#039;, 	[&amp;#039;ฎ&amp;#039;] = &amp;#039;d&amp;#039;, 	[&amp;#039;ฏ&amp;#039;] = &amp;#039;t&amp;#039;, 	[&amp;#039;ฐ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ฑ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ฒ&amp;#039;] = &amp;#039;th&amp;#039;, 	[&amp;#039;ณ&amp;#039;] = &amp;#039;n&amp;#039;, 	[&amp;#039;ด&amp;#039;] = &amp;#039;d&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local U = mw.ustring&lt;br /&gt;
local gsub = U.gsub&lt;br /&gt;
local find = U.find&lt;br /&gt;
local sub = U.sub&lt;br /&gt;
local match = U.match&lt;br /&gt;
local len = U.len&lt;br /&gt;
&lt;br /&gt;
local INITIAL = {&lt;br /&gt;
	[&amp;#039;ก&amp;#039;] = &amp;#039;k&amp;#039;,&lt;br /&gt;
	[&amp;#039;ข&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฃ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ค&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฅ&amp;#039;] = &amp;#039;kh&amp;#039;, [&amp;#039;ฆ&amp;#039;] = &amp;#039;kh&amp;#039;,&lt;br /&gt;
	[&amp;#039;ง&amp;#039;] = &amp;#039;ng&amp;#039;,&lt;br /&gt;
	[&amp;#039;จ&amp;#039;] = &amp;#039;ch&amp;#039;, [&amp;#039;ฉ&amp;#039;] = &amp;#039;ch&amp;#039;, [&amp;#039;ช&amp;#039;] = &amp;#039;ch&amp;#039;,&lt;br /&gt;
	[&amp;#039;ซ&amp;#039;] = &amp;#039;s&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฌ&amp;#039;] = &amp;#039;ch&amp;#039;,&lt;br /&gt;
	[&amp;#039;ญ&amp;#039;] = &amp;#039;y&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฎ&amp;#039;] = &amp;#039;d&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฏ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฐ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ฑ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ฒ&amp;#039;] = &amp;#039;th&amp;#039;,&lt;br /&gt;
	[&amp;#039;ณ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ด&amp;#039;] = &amp;#039;d&amp;#039;,&lt;br /&gt;
	[&amp;#039;ต&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ถ&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ท&amp;#039;] = &amp;#039;th&amp;#039;, [&amp;#039;ธ&amp;#039;] = &amp;#039;th&amp;#039;,&lt;br /&gt;
	[&amp;#039;น&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;บ&amp;#039;] = &amp;#039;b&amp;#039;,&lt;br /&gt;
	[&amp;#039;ป&amp;#039;] = &amp;#039;p&amp;#039;,&lt;br /&gt;
	[&amp;#039;ผ&amp;#039;] = &amp;#039;ph&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฝ&amp;#039;] = &amp;#039;f&amp;#039;,&lt;br /&gt;
	[&amp;#039;พ&amp;#039;] = &amp;#039;ph&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฟ&amp;#039;] = &amp;#039;f&amp;#039;,&lt;br /&gt;
	[&amp;#039;ภ&amp;#039;] = &amp;#039;ph&amp;#039;,&lt;br /&gt;
	[&amp;#039;ม&amp;#039;] = &amp;#039;m&amp;#039;,&lt;br /&gt;
	[&amp;#039;ย&amp;#039;] = &amp;#039;y&amp;#039;,&lt;br /&gt;
	[&amp;#039;ร&amp;#039;] = &amp;#039;r&amp;#039;,&lt;br /&gt;
	[&amp;#039;ล&amp;#039;] = &amp;#039;l&amp;#039;,&lt;br /&gt;
	[&amp;#039;ว&amp;#039;] = &amp;#039;w&amp;#039;,&lt;br /&gt;
	[&amp;#039;ศ&amp;#039;] = &amp;#039;s&amp;#039;, [&amp;#039;ษ&amp;#039;] = &amp;#039;s&amp;#039;, [&amp;#039;ส&amp;#039;] = &amp;#039;s&amp;#039;,&lt;br /&gt;
	[&amp;#039;ห&amp;#039;] = &amp;#039;h&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฬ&amp;#039;] = &amp;#039;l&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฮ&amp;#039;] = &amp;#039;h&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local FINAL = {&lt;br /&gt;
	[&amp;#039;ก&amp;#039;] = &amp;#039;k&amp;#039;,&lt;br /&gt;
	[&amp;#039;ข&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ฃ&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ค&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ฅ&amp;#039;] = &amp;#039;k&amp;#039;, [&amp;#039;ฆ&amp;#039;] = &amp;#039;k&amp;#039;,&lt;br /&gt;
	[&amp;#039;ง&amp;#039;] = &amp;#039;ng&amp;#039;,&lt;br /&gt;
	[&amp;#039;จ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ฉ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ช&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ฌ&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;ซ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ญ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฎ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ฏ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฐ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ฑ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ฒ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ณ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ด&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ต&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ถ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ท&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ธ&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;น&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;บ&amp;#039;] = &amp;#039;p&amp;#039;,&lt;br /&gt;
	[&amp;#039;ป&amp;#039;] = &amp;#039;p&amp;#039;,&lt;br /&gt;
	[&amp;#039;ผ&amp;#039;] = &amp;#039;&amp;#039;, [&amp;#039;ฝ&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;พ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ฟ&amp;#039;] = &amp;#039;p&amp;#039;, [&amp;#039;ภ&amp;#039;] = &amp;#039;p&amp;#039;,&lt;br /&gt;
	[&amp;#039;ม&amp;#039;] = &amp;#039;m&amp;#039;,&lt;br /&gt;
	[&amp;#039;ย&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;ร&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ล&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ว&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;ศ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ษ&amp;#039;] = &amp;#039;t&amp;#039;, [&amp;#039;ส&amp;#039;] = &amp;#039;t&amp;#039;,&lt;br /&gt;
	[&amp;#039;ห&amp;#039;] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฬ&amp;#039;] = &amp;#039;n&amp;#039;,&lt;br /&gt;
	[&amp;#039;ฮ&amp;#039;] = &amp;#039;&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Vowel patterns are tested longest-first.&lt;br /&gt;
local VOWELS = {&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ะ&amp;#039;, &amp;#039;e&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;็&amp;#039;, &amp;#039;e&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;&amp;#039;,  &amp;#039;e&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;แ&amp;#039; , &amp;#039;ะ&amp;#039;, &amp;#039;ae&amp;#039; },&lt;br /&gt;
	{ &amp;#039;แ&amp;#039; , &amp;#039;&amp;#039;,  &amp;#039;ae&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;โ&amp;#039; , &amp;#039;ะ&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
	{ &amp;#039;โ&amp;#039; , &amp;#039;&amp;#039;,  &amp;#039;o&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;าะ&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039;  , &amp;#039;อ&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;อะ&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ิ&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;อ&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ียะ&amp;#039;, &amp;#039;ia&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ีย&amp;#039;, &amp;#039;ia&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ือะ&amp;#039;, &amp;#039;uea&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039; , &amp;#039;ือ&amp;#039;, &amp;#039;uea&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039;  , &amp;#039;ัวะ&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039;  , &amp;#039;ัว&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039;  , &amp;#039;ว&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;ใ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
	{ &amp;#039;ไ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ัย&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
	{ &amp;#039;ไ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;าย&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;าว&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ุย&amp;#039;, &amp;#039;ui&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;โ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;oi&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;อย&amp;#039;, &amp;#039;oi&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;oei&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;ือย&amp;#039;, &amp;#039;ueai&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;วย&amp;#039;, &amp;#039;uai&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ิว&amp;#039;, &amp;#039;io&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;็ว&amp;#039;, &amp;#039;eo&amp;#039; },&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;eo&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;แ&amp;#039;, &amp;#039;็ว&amp;#039;, &amp;#039;aeo&amp;#039; },&lt;br /&gt;
	{ &amp;#039;แ&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;aeo&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;เ&amp;#039;, &amp;#039;ียว&amp;#039;, &amp;#039;iao&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ะ&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ั&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;า&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ำ&amp;#039;, &amp;#039;am&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ิ&amp;#039;, &amp;#039;i&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ี&amp;#039;, &amp;#039;i&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ึ&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ื&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ือ&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ุ&amp;#039;, &amp;#039;u&amp;#039; },&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;ู&amp;#039;, &amp;#039;u&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
	{ &amp;#039;&amp;#039; , &amp;#039;รร&amp;#039;, &amp;#039;a&amp;#039; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function isConsonant(c)&lt;br /&gt;
	return c and INITIAL[c] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isThai(c)&lt;br /&gt;
	return c and match(c, &amp;#039;[ก-๛]&amp;#039;) ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isToneMark(c)&lt;br /&gt;
	return c and match(c, &amp;#039;[่้๊๋]&amp;#039;) ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isSilentMark(c)&lt;br /&gt;
	return c == &amp;#039;์&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function clean(str)&lt;br /&gt;
	str = mw.text.unstrip(str or &amp;#039;&amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;&amp;lt;br%s*/?&amp;gt;&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;&amp;lt;[^&amp;gt;]+&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function applyOrthographicExceptions(str)&lt;br /&gt;
	-- Silent letters marked with ์.&lt;br /&gt;
	-- Remove the marked letter and its ์ marker.&lt;br /&gt;
	str = gsub(str, &amp;#039;([ก-ฮ])์&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Tone marks have no RTGS representation.&lt;br /&gt;
	str = gsub(str, &amp;#039;[่้๊๋]&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- ฤ&lt;br /&gt;
	str = gsub(str, &amp;#039;ฤกษ์&amp;#039;, &amp;#039;roe&amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;ฤิ&amp;#039;, &amp;#039;ri&amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;ฤ&amp;#039;, &amp;#039;rue&amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;ฤๅ&amp;#039;, &amp;#039;rue&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- ฦ / ฦๅ&lt;br /&gt;
	str = gsub(str, &amp;#039;ฦๅ&amp;#039;, &amp;#039;lue&amp;#039;)&lt;br /&gt;
	str = gsub(str, &amp;#039;ฦ&amp;#039;, &amp;#039;lue&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getVowel(str, pos)&lt;br /&gt;
	local remaining = sub(str, pos, -1)&lt;br /&gt;
&lt;br /&gt;
	-- Explicit special vowel patterns.&lt;br /&gt;
	local patterns = {&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ื&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;ueai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ี&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;iao&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ี&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;ia&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ี&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;,  &amp;#039;ia&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ื&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;uea&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ื&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;&amp;#039;,  &amp;#039;uea&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;็&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;eo&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;eo&amp;#039; },&lt;br /&gt;
		{ &amp;#039;แ&amp;#039;, &amp;#039;็&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;aeo&amp;#039; },&lt;br /&gt;
		{ &amp;#039;แ&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;aeo&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;โ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oi&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oi&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oei&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;uai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ุ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ui&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ิ&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;io&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ั&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ั&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ว&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ua&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;ใ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;ไ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ั&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;ไ&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;ย&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ai&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
		{ &amp;#039;โ&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ao&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;าะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ิ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;อะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;oe&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;แ&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ae&amp;#039; },&lt;br /&gt;
		{ &amp;#039;แ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ae&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;e&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;็&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;e&amp;#039; },&lt;br /&gt;
		{ &amp;#039;เ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;e&amp;#039; },&lt;br /&gt;
		{ &amp;#039;โ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;o&amp;#039; },&lt;br /&gt;
&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ำ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;am&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ะ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ั&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;า&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;a&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ิ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;i&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ี&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;i&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ึ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ือ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ื&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;ue&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ุ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;u&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;ู&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;u&amp;#039; },&lt;br /&gt;
		{ &amp;#039;&amp;#039;, &amp;#039;อ&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;o&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(patterns) do&lt;br /&gt;
		local a, b, c, d, roman = v&lt;br /&gt;
		local pattern = a .. b .. c .. d&lt;br /&gt;
		if pattern ~= &amp;#039;&amp;#039; and sub(remaining, 1, len(pattern)) == pattern then&lt;br /&gt;
			return roman, len(pattern)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Implied a.&lt;br /&gt;
	return &amp;#039;a&amp;#039;, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nextVowelPosition(str, pos)&lt;br /&gt;
	local i = pos&lt;br /&gt;
	while i &amp;lt;= len(str) do&lt;br /&gt;
		local c = sub(str, i, i)&lt;br /&gt;
&lt;br /&gt;
		if c == &amp;#039;เ&amp;#039; or c == &amp;#039;แ&amp;#039; or c == &amp;#039;โ&amp;#039; or c == &amp;#039;ใ&amp;#039; or c == &amp;#039;ไ&amp;#039; then&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if match(c, &amp;#039;[ะาิีึืุูัำอ]&amp;#039;) then&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function romanizeSyllable(str, startPos)&lt;br /&gt;
	local pos = startPos&lt;br /&gt;
	local n = len(str)&lt;br /&gt;
&lt;br /&gt;
	-- Preposed vowel.&lt;br /&gt;
	local preVowel = &amp;#039;&amp;#039;&lt;br /&gt;
	local preLen = 0&lt;br /&gt;
	local c = sub(str, pos, pos)&lt;br /&gt;
&lt;br /&gt;
	if c == &amp;#039;เ&amp;#039; or c == &amp;#039;แ&amp;#039; or c == &amp;#039;โ&amp;#039; or c == &amp;#039;ใ&amp;#039; or c == &amp;#039;ไ&amp;#039; then&lt;br /&gt;
		preVowel = c&lt;br /&gt;
		preLen = 1&lt;br /&gt;
		pos = pos + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Initial consonant.&lt;br /&gt;
	local initial = sub(str, pos, pos)&lt;br /&gt;
&lt;br /&gt;
	if not isConsonant(initial) then&lt;br /&gt;
		-- Non-Thai character.&lt;br /&gt;
		return initial, 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pos = pos + 1&lt;br /&gt;
	local initialRom = INITIAL[initial] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- ห- exception.&lt;br /&gt;
	if initial == &amp;#039;ห&amp;#039; then&lt;br /&gt;
		local second = sub(str, pos, pos)&lt;br /&gt;
		if second and match(second, &amp;#039;[งนมยรลวญณฬ]&amp;#039;) then&lt;br /&gt;
			initialRom = INITIAL[second]&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
			initial = second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Consonant clusters where ร is not represented.&lt;br /&gt;
	if (initial == &amp;#039;จ&amp;#039; or initial == &amp;#039;ซ&amp;#039; or initial == &amp;#039;ศ&amp;#039; or initial == &amp;#039;ส&amp;#039;)&lt;br /&gt;
		and sub(str, pos, pos) == &amp;#039;ร&amp;#039; then&lt;br /&gt;
		initialRom = INITIAL[initial]&lt;br /&gt;
		pos = pos + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the vowel from the current position, including preposed vowels.&lt;br /&gt;
	local vowelStart = startPos + preLen + 1&lt;br /&gt;
	local vowelRoman&lt;br /&gt;
	local vowelLen&lt;br /&gt;
&lt;br /&gt;
	if preLen &amp;gt; 0 then&lt;br /&gt;
		vowelRoman, vowelLen = getVowel(str, startPos + 1)&lt;br /&gt;
	else&lt;br /&gt;
		vowelRoman, vowelLen = getVowel(str, pos)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If the vowel was explicitly consumed by getVowel, advance.&lt;br /&gt;
	if vowelLen &amp;gt; 0 then&lt;br /&gt;
		if preLen &amp;gt; 0 then&lt;br /&gt;
			pos = startPos + preLen + 1 + vowelLen&lt;br /&gt;
		else&lt;br /&gt;
			pos = pos + vowelLen&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Collect possible final consonant.&lt;br /&gt;
	local final = sub(str, pos, pos)&lt;br /&gt;
	local finalRom = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if isConsonant(final) then&lt;br /&gt;
		local after = sub(str, pos + 1, pos + 1)&lt;br /&gt;
&lt;br /&gt;
		-- A consonant followed by a vowel-starting syllable is normally&lt;br /&gt;
		-- treated as the next syllable&amp;#039;s initial rather than this syllable&amp;#039;s final.&lt;br /&gt;
		local nextIsVowel = after and (&lt;br /&gt;
			match(after, &amp;#039;[ะาิีึืุูัำอ]&amp;#039;) or&lt;br /&gt;
			match(after, &amp;#039;[เแโใไ]&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		if not nextIsVowel then&lt;br /&gt;
			finalRom = FINAL[final] or &amp;#039;&amp;#039;&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
			-- -ร following another final consonant is silent in RTGS.&lt;br /&gt;
			if final == &amp;#039;ร&amp;#039; then&lt;br /&gt;
				finalRom = &amp;#039;n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- ทร- exception.&lt;br /&gt;
	if initial == &amp;#039;ท&amp;#039; and sub(str, pos, pos) == &amp;#039;ร&amp;#039; then&lt;br /&gt;
		initialRom = &amp;#039;s&amp;#039;&lt;br /&gt;
		pos = pos + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return initialRom .. vowelRoman .. finalRom, math.max(1, pos - startPos)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function romanizeWord(word)&lt;br /&gt;
	if word == &amp;#039;&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Manual markers:&lt;br /&gt;
	-- &amp;lt; &amp;gt; = force space&lt;br /&gt;
	-- &amp;lt;-&amp;gt; = force hyphen&lt;br /&gt;
	word = gsub(word, &amp;#039;&amp;lt; &amp;gt;&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
	word = gsub(word, &amp;#039;&amp;lt;-&amp;gt;&amp;#039;, &amp;#039;-&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local output = {}&lt;br /&gt;
	local pos = 1&lt;br /&gt;
	local n = len(word)&lt;br /&gt;
&lt;br /&gt;
	while pos &amp;lt;= n do&lt;br /&gt;
		local c = sub(word, pos, pos)&lt;br /&gt;
&lt;br /&gt;
		if c == &amp;#039;&amp;lt;&amp;#039; then&lt;br /&gt;
			local close = find(word, &amp;#039;&amp;gt;&amp;#039;, pos + 1, true)&lt;br /&gt;
			if close then&lt;br /&gt;
				pos = close + 1&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(output, c)&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			end&lt;br /&gt;
		elseif not isThai(c) then&lt;br /&gt;
			table.insert(output, c)&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
		else&lt;br /&gt;
			local roman, consumed = romanizeSyllable(word, pos)&lt;br /&gt;
			table.insert(output, roman)&lt;br /&gt;
			pos = pos + consumed&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function capitalize(str, sentence)&lt;br /&gt;
	local chars = mw.text.split(str, &amp;#039;&amp;#039;)&lt;br /&gt;
	local shouldCap = true&lt;br /&gt;
&lt;br /&gt;
	for i, c in ipairs(chars) do&lt;br /&gt;
		if match(c, &amp;#039;%a&amp;#039;) then&lt;br /&gt;
			if shouldCap then&lt;br /&gt;
				chars[i] = U.upper(c)&lt;br /&gt;
				shouldCap = false&lt;br /&gt;
			elseif sentence then&lt;br /&gt;
				shouldCap = false&lt;br /&gt;
			end&lt;br /&gt;
		elseif c == &amp;#039; &amp;#039; then&lt;br /&gt;
			if sentence then&lt;br /&gt;
				shouldCap = true&lt;br /&gt;
			else&lt;br /&gt;
				shouldCap = true&lt;br /&gt;
			end&lt;br /&gt;
		elseif match(c, &amp;#039;[%.!?]&amp;#039;) then&lt;br /&gt;
			shouldCap = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(chars)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		parentFirst = true,&lt;br /&gt;
		wrappers = {&amp;#039;Template:Th-rm&amp;#039;}&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	if not args[1] or args[1] == &amp;#039;&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local str = clean(args[1])&lt;br /&gt;
&lt;br /&gt;
	-- Don&amp;#039;t romanize text which contains no Thai script.&lt;br /&gt;
	if not match(str, &amp;#039;[ก-๛]&amp;#039;) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	str = applyOrthographicExceptions(str)&lt;br /&gt;
&lt;br /&gt;
	local result = romanizeWord(str)&lt;br /&gt;
&lt;br /&gt;
	if args.capi then&lt;br /&gt;
		result = capitalize(result, false)&lt;br /&gt;
	elseif args.sent then&lt;br /&gt;
		result = capitalize(result, true)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
</feed>