<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AX2i</id>
	<title>Module:X2i - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AX2i"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:X2i&amp;action=history"/>
	<updated>2026-05-27T18:04:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:X2i&amp;diff=147740&amp;oldid=prev</id>
		<title>imported&gt;Pppery: Cleanup</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:X2i&amp;diff=147740&amp;oldid=prev"/>
		<updated>2020-09-26T17:24:29Z</updated>

		<summary type="html">&lt;p&gt;Cleanup&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.char&lt;br /&gt;
-- Slashes \, apostrophes &amp;#039;, and double quotes &amp;quot; are escaped with \.&lt;br /&gt;
-- \\ = \, \&amp;#039; = &amp;#039;, \&amp;quot; = &amp;quot;&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	[&amp;quot;a&amp;quot;] = { &amp;quot;a&amp;quot; },&lt;br /&gt;
	[&amp;quot;b&amp;quot;] = { &amp;quot;b&amp;quot; },&lt;br /&gt;
	-- not in official X-SAMPA; from http://www.kneequickie.com/kq/Z-SAMPA and used by Wiktionary&lt;br /&gt;
	[&amp;quot;b\\&amp;quot;] = { &amp;quot;ⱱ&amp;quot; },&lt;br /&gt;
	[&amp;quot;b_&amp;lt;&amp;quot;] = { &amp;quot;ɓ&amp;quot; },&lt;br /&gt;
	[&amp;quot;c&amp;quot;] = { &amp;quot;c&amp;quot; },&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = { &amp;quot;d&amp;quot; },&lt;br /&gt;
	[&amp;quot;d`&amp;quot;] = { &amp;quot;ɖ&amp;quot;, has_descender = true },&lt;br /&gt;
	[&amp;quot;d_&amp;lt;&amp;quot;] = { &amp;quot;ɗ&amp;quot; },&lt;br /&gt;
	-- not in official X-SAMPA; Wikipedia-specific&lt;br /&gt;
	[&amp;quot;d`_&amp;lt;&amp;quot;] = { &amp;quot;ᶑ&amp;quot;, has_descender = true },&lt;br /&gt;
	[&amp;quot;e&amp;quot;] = { &amp;quot;e&amp;quot; },&lt;br /&gt;
	[&amp;quot;f&amp;quot;] = { &amp;quot;f&amp;quot; },&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = { &amp;quot;ɡ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;g_&amp;lt;&amp;quot;] = { &amp;quot;ɠ&amp;quot;, has_descender = true },&lt;br /&gt;
	[&amp;quot;h&amp;quot;] = { &amp;quot;h&amp;quot; },&lt;br /&gt;
	[&amp;quot;h\\&amp;quot;] = { &amp;quot;ɦ&amp;quot; },&lt;br /&gt;
	[&amp;quot;i&amp;quot;] = { &amp;quot;i&amp;quot; },&lt;br /&gt;
	[&amp;quot;j&amp;quot;] = { &amp;quot;j&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;j\\&amp;quot;] = { &amp;quot;ʝ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;k&amp;quot;] = { &amp;quot;k&amp;quot; },&lt;br /&gt;
	[&amp;quot;l&amp;quot;] = { &amp;quot;l&amp;quot; },&lt;br /&gt;
	[&amp;quot;l`&amp;quot;] = { &amp;quot;ɭ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;l\\&amp;quot;] = { &amp;quot;ɺ&amp;quot; },&lt;br /&gt;
	[&amp;quot;m&amp;quot;] = { &amp;quot;m&amp;quot; },&lt;br /&gt;
	[&amp;quot;n&amp;quot;] = { &amp;quot;n&amp;quot; },&lt;br /&gt;
	[&amp;quot;n`&amp;quot;] = { &amp;quot;ɳ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;o&amp;quot;] = { &amp;quot;o&amp;quot; },&lt;br /&gt;
	[&amp;quot;p&amp;quot;] = { &amp;quot;p&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;p\\&amp;quot;] = { &amp;quot;ɸ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;q&amp;quot;] = { &amp;quot;q&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;r&amp;quot;] = { &amp;quot;r&amp;quot; },&lt;br /&gt;
	[&amp;quot;r`&amp;quot;] = { &amp;quot;ɽ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;r\\&amp;quot;] = { &amp;quot;ɹ&amp;quot; },&lt;br /&gt;
	[&amp;quot;r\\`&amp;quot;] = { &amp;quot;ɻ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;s&amp;quot;] = { &amp;quot;s&amp;quot; },&lt;br /&gt;
	[&amp;quot;s`&amp;quot;] = { &amp;quot;ʂ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;s\\&amp;quot;] = { &amp;quot;ɕ&amp;quot; },&lt;br /&gt;
	[&amp;quot;t&amp;quot;] = { &amp;quot;t&amp;quot; },&lt;br /&gt;
	[&amp;quot;t`&amp;quot;] = { &amp;quot;ʈ&amp;quot; },&lt;br /&gt;
	[&amp;quot;u&amp;quot;] = { &amp;quot;u&amp;quot; },&lt;br /&gt;
	[&amp;quot;v&amp;quot;] = { &amp;quot;v&amp;quot; },&lt;br /&gt;
	[&amp;quot;v\\&amp;quot;] = { &amp;quot;ʋ&amp;quot; },&lt;br /&gt;
	[&amp;quot;w&amp;quot;] = { &amp;quot;w&amp;quot; },&lt;br /&gt;
	[&amp;quot;x&amp;quot;] = { &amp;quot;x&amp;quot; },&lt;br /&gt;
	[&amp;quot;x\\&amp;quot;] = { &amp;quot;ɧ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;y&amp;quot;] = { &amp;quot;y&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;z&amp;quot;] = { &amp;quot;z&amp;quot; },&lt;br /&gt;
	[&amp;quot;z`&amp;quot;] = { &amp;quot;ʐ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;z\\&amp;quot;] = { &amp;quot;ʑ&amp;quot; },&lt;br /&gt;
	[&amp;quot;A&amp;quot;] = { &amp;quot;ɑ&amp;quot; },&lt;br /&gt;
	[&amp;quot;B&amp;quot;] = { &amp;quot;β&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;B\\&amp;quot;] = { &amp;quot;ʙ&amp;quot; },&lt;br /&gt;
	[&amp;quot;C&amp;quot;] = { &amp;quot;ç&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;D&amp;quot;] = { &amp;quot;ð&amp;quot; },&lt;br /&gt;
	[&amp;quot;E&amp;quot;] = { &amp;quot;ɛ&amp;quot; },&lt;br /&gt;
	[&amp;quot;F&amp;quot;] = { &amp;quot;ɱ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;G&amp;quot;] = { &amp;quot;ɣ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;G\\&amp;quot;] = { &amp;quot;ɢ&amp;quot; },&lt;br /&gt;
	[&amp;quot;G\\_&amp;lt;&amp;quot;] = { &amp;quot;ʛ&amp;quot; },&lt;br /&gt;
	[&amp;quot;H&amp;quot;] = { &amp;quot;ɥ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;H\\&amp;quot;] = { &amp;quot;ʜ&amp;quot; },&lt;br /&gt;
	[&amp;quot;I&amp;quot;] = { &amp;quot;ɪ&amp;quot; },&lt;br /&gt;
	[&amp;quot;I\\&amp;quot;] = { &amp;quot;ɪ̈&amp;quot; },&lt;br /&gt;
	[&amp;quot;J&amp;quot;] = { &amp;quot;ɲ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;J\\&amp;quot;] = { &amp;quot;ɟ&amp;quot; },&lt;br /&gt;
	[&amp;quot;J\\_&amp;lt;&amp;quot;] = { &amp;quot;ʄ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;K&amp;quot;] = { &amp;quot;ɬ&amp;quot; },&lt;br /&gt;
	[&amp;quot;K\\&amp;quot;] = { &amp;quot;ɮ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;L&amp;quot;] = { &amp;quot;ʎ&amp;quot; },&lt;br /&gt;
	[&amp;quot;L\\&amp;quot;] = { &amp;quot;ʟ&amp;quot; },&lt;br /&gt;
	[&amp;quot;M&amp;quot;] = { &amp;quot;ɯ&amp;quot; },&lt;br /&gt;
	[&amp;quot;M\\&amp;quot;] = { &amp;quot;ɰ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;N&amp;quot;] = { &amp;quot;ŋ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;N\\&amp;quot;] = { &amp;quot;ɴ&amp;quot; },&lt;br /&gt;
	[&amp;quot;O&amp;quot;] = { &amp;quot;ɔ&amp;quot; },&lt;br /&gt;
	[&amp;quot;O\\&amp;quot;] = { &amp;quot;ʘ&amp;quot; },&lt;br /&gt;
	[&amp;quot;P&amp;quot;] = { &amp;quot;ʋ&amp;quot; },&lt;br /&gt;
	[&amp;quot;Q&amp;quot;] = { &amp;quot;ɒ&amp;quot; },&lt;br /&gt;
	[&amp;quot;R&amp;quot;] = { &amp;quot;ʁ&amp;quot; },&lt;br /&gt;
	[&amp;quot;R\\&amp;quot;] = { &amp;quot;ʀ&amp;quot; },&lt;br /&gt;
	[&amp;quot;S&amp;quot;] = { &amp;quot;ʃ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;T&amp;quot;] = { &amp;quot;θ&amp;quot; },&lt;br /&gt;
	[&amp;quot;U&amp;quot;] = { &amp;quot;ʊ&amp;quot; },&lt;br /&gt;
	[&amp;quot;U\\&amp;quot;] = { &amp;quot;ʊ̈&amp;quot; },&lt;br /&gt;
	[&amp;quot;V&amp;quot;] = { &amp;quot;ʌ&amp;quot; },&lt;br /&gt;
	[&amp;quot;W&amp;quot;] = { &amp;quot;ʍ&amp;quot; },&lt;br /&gt;
	[&amp;quot;X&amp;quot;] = { &amp;quot;χ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;X\\&amp;quot;] = { &amp;quot;ħ&amp;quot; },&lt;br /&gt;
	[&amp;quot;Y&amp;quot;] = { &amp;quot;ʏ&amp;quot; },&lt;br /&gt;
	[&amp;quot;Z&amp;quot;] = { &amp;quot;ʒ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;.&amp;quot;] = { &amp;quot;.&amp;quot; },&lt;br /&gt;
	[&amp;quot;\&amp;quot;&amp;quot;] = { &amp;quot;ˈ&amp;quot; },&lt;br /&gt;
	[&amp;quot;%&amp;quot;] = { &amp;quot;ˌ&amp;quot; },&lt;br /&gt;
	-- not in official X-SAMPA; from http://www.kneequickie.com/kq/Z-SAMPA and used by Wiktionary&lt;br /&gt;
	[&amp;quot;%\\&amp;quot;] = { &amp;quot;ᴙ&amp;quot; }, &lt;br /&gt;
	[&amp;quot;&amp;#039;&amp;quot;] = { &amp;quot;ʲ&amp;quot;, is_diacritic = true },&lt;br /&gt;
	[&amp;quot;:&amp;quot;] = { &amp;quot;ː&amp;quot;, is_diacritic = true },&lt;br /&gt;
	[&amp;quot;:\\&amp;quot;] = { &amp;quot;ˑ&amp;quot;, is_diacritic = true },&lt;br /&gt;
	[&amp;quot;@&amp;quot;] = { &amp;quot;ə&amp;quot; },&lt;br /&gt;
	[&amp;quot;@`&amp;quot;] = { &amp;quot;ɚ&amp;quot; },&lt;br /&gt;
	[&amp;quot;@\\&amp;quot;] = { &amp;quot;ɘ&amp;quot; },&lt;br /&gt;
	[&amp;quot;{&amp;quot;] = { &amp;quot;æ&amp;quot; },&lt;br /&gt;
	[&amp;quot;}&amp;quot;] = { &amp;quot;ʉ&amp;quot; },&lt;br /&gt;
	[&amp;quot;1&amp;quot;] = { &amp;quot;ɨ&amp;quot; },&lt;br /&gt;
	[&amp;quot;2&amp;quot;] = { &amp;quot;ø&amp;quot; },&lt;br /&gt;
	[&amp;quot;3&amp;quot;] = { &amp;quot;ɜ&amp;quot; },&lt;br /&gt;
	[&amp;quot;3`&amp;quot;] = { &amp;quot;ɝ&amp;quot; },&lt;br /&gt;
	[&amp;quot;3\\&amp;quot;] = { &amp;quot;ɞ&amp;quot; },&lt;br /&gt;
	[&amp;quot;4&amp;quot;] = { &amp;quot;ɾ&amp;quot; },&lt;br /&gt;
	[&amp;quot;5&amp;quot;] = { &amp;quot;ɫ&amp;quot; },&lt;br /&gt;
	[&amp;quot;6&amp;quot;] = { &amp;quot;ɐ&amp;quot; },&lt;br /&gt;
	[&amp;quot;7&amp;quot;] = { &amp;quot;ɤ&amp;quot; },&lt;br /&gt;
	[&amp;quot;8&amp;quot;] = { &amp;quot;ɵ&amp;quot; },&lt;br /&gt;
	[&amp;quot;9&amp;quot;] = { &amp;quot;œ&amp;quot; },&lt;br /&gt;
	[&amp;quot;&amp;amp;&amp;quot;] = { &amp;quot;ɶ&amp;quot; },&lt;br /&gt;
	[&amp;quot;?&amp;quot;] = { &amp;quot;ʔ&amp;quot; },&lt;br /&gt;
	[&amp;quot;?\\&amp;quot;] = { &amp;quot;ʕ&amp;quot; },&lt;br /&gt;
	[&amp;quot;&amp;lt;\\&amp;quot;] = { &amp;quot;ʢ&amp;quot; },&lt;br /&gt;
	[&amp;quot;&amp;gt;\\&amp;quot;] = { &amp;quot;ʡ&amp;quot; },&lt;br /&gt;
	[&amp;quot;^&amp;quot;] = { &amp;quot;ꜛ&amp;quot; },&lt;br /&gt;
	[&amp;quot;!&amp;quot;] = { &amp;quot;ꜜ&amp;quot; },&lt;br /&gt;
	-- not in official X-SAMPA&lt;br /&gt;
	[&amp;quot;!!&amp;quot;] = { &amp;quot;‼&amp;quot; }, &lt;br /&gt;
	[&amp;quot;!\\&amp;quot;] = { &amp;quot;ǃ&amp;quot; },&lt;br /&gt;
	[&amp;quot;|&amp;quot;] = { &amp;quot;|&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;|\\&amp;quot;] = { &amp;quot;ǀ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;||&amp;quot;] = { &amp;quot;‖&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;|\\|\\&amp;quot;] = { &amp;quot;ǁ&amp;quot;, has_descender = true  },&lt;br /&gt;
	[&amp;quot;=\\&amp;quot;] = { &amp;quot;ǂ&amp;quot;, has_descender = true  },&lt;br /&gt;
	-- linking mark, liaison&lt;br /&gt;
	[&amp;quot;-\\&amp;quot;] = { &amp;quot;‿&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- coarticulated; not in official X-SAMPA; used by Wiktionary&lt;br /&gt;
	[&amp;quot;__&amp;quot;] = { U(0x361) }, &lt;br /&gt;
	-- fortis, strong articulation; not in official X-SAMPA; used by Wiktionary&lt;br /&gt;
	[&amp;quot;_:&amp;quot;] = { U(0x348) }, &lt;br /&gt;
	[&amp;quot;_\&amp;quot;&amp;quot;] = { U(0x308), is_diacritic = true },&lt;br /&gt;
	-- advanced&lt;br /&gt;
	[&amp;quot;_+&amp;quot;] = { U(0x31F), with_descender = &amp;quot;˖&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- retracted&lt;br /&gt;
	[&amp;quot;_-&amp;quot;] = { U(0x320), with_descender = &amp;quot;˗&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- rising tone&lt;br /&gt;
	[&amp;quot;_/&amp;quot;] = { U(0x30C), is_diacritic = true }, &lt;br /&gt;
	-- voiceless&lt;br /&gt;
	[&amp;quot;_0&amp;quot;] = { U(0x325), with_descender = U(0x30A), is_diacritic = true }, &lt;br /&gt;
	-- syllabic&lt;br /&gt;
	[&amp;quot;=&amp;quot;] = { U(0x329), with_descender = U(0x30D), is_diacritic = true }, &lt;br /&gt;
	-- syllabic&lt;br /&gt;
	[&amp;quot;_=&amp;quot;] = { U(0x329), with_descender = U(0x30D), is_diacritic = true }, &lt;br /&gt;
	-- strident: not in official X-SAMPA; from http://www.kneequickie.com/kq/Z-SAMPA and used by Wiktionary&lt;br /&gt;
	[&amp;quot;_%\\&amp;quot;] = { U(0x1DFD) }, &lt;br /&gt;
	-- ejective&lt;br /&gt;
	[&amp;quot;_&amp;gt;&amp;quot;] = { &amp;quot;ʼ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- pharyngealized&lt;br /&gt;
	[&amp;quot;_?\\&amp;quot;] = { &amp;quot;ˤ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- falling tone&lt;br /&gt;
	[&amp;quot;_\\&amp;quot;] = { U(0x302), is_diacritic = true }, &lt;br /&gt;
	-- non-syllabic&lt;br /&gt;
	[&amp;quot;_^&amp;quot;] = { U(0x32F), with_descender = U(0x311), is_diacritic = true }, &lt;br /&gt;
	-- no audible release&lt;br /&gt;
	[&amp;quot;_}&amp;quot;] = { U(0x31A), is_diacritic = true }, &lt;br /&gt;
	-- r-coloring (colouring), rhotacization&lt;br /&gt;
	[&amp;quot;`&amp;quot;] = { U(0x2DE), is_diacritic = true }, &lt;br /&gt;
	-- nasalization&lt;br /&gt;
	[&amp;quot;~&amp;quot;] = { U(0x303), is_diacritic = true }, &lt;br /&gt;
	-- advanced tongue root&lt;br /&gt;
	[&amp;quot;_A&amp;quot;] = { U(0x318), is_diacritic = true }, &lt;br /&gt;
	-- apical&lt;br /&gt;
	[&amp;quot;_a&amp;quot;] = { U(0x33A), is_diacritic = true }, &lt;br /&gt;
	-- extra-low tone&lt;br /&gt;
	[&amp;quot;_B&amp;quot;] = { U(0x30F), is_diacritic = true }, &lt;br /&gt;
	-- low rising tone&lt;br /&gt;
	[&amp;quot;_B_L&amp;quot;] = { U(0x1DC5), is_diacritic = true }, &lt;br /&gt;
	-- less rounded&lt;br /&gt;
	[&amp;quot;_c&amp;quot;] = { U(0x31C), is_diacritic = true }, &lt;br /&gt;
	-- dental&lt;br /&gt;
	[&amp;quot;_d&amp;quot;] = { U(0x32A), is_diacritic = true }, &lt;br /&gt;
	-- velarized or pharyngealized (dark)&lt;br /&gt;
	[&amp;quot;_e&amp;quot;] = { U(0x334), is_diacritic = true }, &lt;br /&gt;
	-- downstep&lt;br /&gt;
	[&amp;quot;&amp;lt;F&amp;gt;&amp;quot;] = { &amp;quot;↘&amp;quot; }, &lt;br /&gt;
	-- falling tone&lt;br /&gt;
	[&amp;quot;_F&amp;quot;] = { U(0x302), is_diacritic = true }, &lt;br /&gt;
	-- velarized&lt;br /&gt;
	[&amp;quot;_G&amp;quot;] = { &amp;quot;ˠ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- high tone&lt;br /&gt;
	[&amp;quot;_H&amp;quot;] = { U(0x301), is_diacritic = true }, &lt;br /&gt;
	-- high rising tone&lt;br /&gt;
	[&amp;quot;_H_T&amp;quot;] = { U(0x1DC4), is_diacritic = true }, &lt;br /&gt;
	-- aspiration&lt;br /&gt;
	[&amp;quot;_h&amp;quot;] = { &amp;quot;ʰ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- palatalization&lt;br /&gt;
	[&amp;quot;_j&amp;quot;] = { &amp;quot;ʲ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- creaky voice, laryngealization, vocal fry&lt;br /&gt;
	[&amp;quot;_k&amp;quot;] = { U(0x330), is_diacritic = true }, &lt;br /&gt;
	-- low tone&lt;br /&gt;
	[&amp;quot;_L&amp;quot;] = { U(0x300), is_diacritic = true }, &lt;br /&gt;
	-- lateral release&lt;br /&gt;
	[&amp;quot;_l&amp;quot;] = { &amp;quot;ˡ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- mid tone&lt;br /&gt;
	[&amp;quot;_M&amp;quot;] = { U(0x304), is_diacritic = true }, &lt;br /&gt;
	-- laminal&lt;br /&gt;
	[&amp;quot;_m&amp;quot;] = { U(0x33B), is_diacritic = true }, &lt;br /&gt;
	-- linguolabial&lt;br /&gt;
	[&amp;quot;_N&amp;quot;] = { U(0x33C), is_diacritic = true }, &lt;br /&gt;
	-- nasal release&lt;br /&gt;
	[&amp;quot;_n&amp;quot;] = { &amp;quot;ⁿ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- more rounded&lt;br /&gt;
	[&amp;quot;_O&amp;quot;] = { U(0x339), is_diacritic = true }, &lt;br /&gt;
	-- lowered&lt;br /&gt;
	[&amp;quot;_o&amp;quot;] = { U(0x31E), with_descender = &amp;quot;˕&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- retracted tongue root&lt;br /&gt;
	[&amp;quot;_q&amp;quot;] = { U(0x319), is_diacritic = true }, &lt;br /&gt;
	-- global rise&lt;br /&gt;
	[&amp;quot;&amp;lt;R&amp;gt;&amp;quot;] = { &amp;quot;↗&amp;quot; }, &lt;br /&gt;
	-- rising tone&lt;br /&gt;
	[&amp;quot;_R&amp;quot;] = { U(0x30C), is_diacritic = true }, &lt;br /&gt;
	-- rising falling tone&lt;br /&gt;
	[&amp;quot;_R_F&amp;quot;] = { U(0x1DC8), is_diacritic = true }, &lt;br /&gt;
	-- raised&lt;br /&gt;
	[&amp;quot;_r&amp;quot;] = { U(0x31D), is_diacritic = true }, &lt;br /&gt;
	-- extra-high tone&lt;br /&gt;
	[&amp;quot;_T&amp;quot;] = { U(0x30B), is_diacritic = true }, &lt;br /&gt;
	-- breathy voice, murmured voice, murmur, whispery voice&lt;br /&gt;
	[&amp;quot;_t&amp;quot;] = { U(0x324), is_diacritic = true }, &lt;br /&gt;
	-- voiced&lt;br /&gt;
	[&amp;quot;_v&amp;quot;] = { U(0x32C), is_diacritic = true }, &lt;br /&gt;
	-- labialized&lt;br /&gt;
	[&amp;quot;_w&amp;quot;] = { &amp;quot;ʷ&amp;quot;, is_diacritic = true }, &lt;br /&gt;
	-- extra-short&lt;br /&gt;
	[&amp;quot;_X&amp;quot;] = { U(0x306), is_diacritic = true }, &lt;br /&gt;
	-- mid-centralized&lt;br /&gt;
	[&amp;quot;_x&amp;quot;] = { U(0x33D), is_diacritic = true }, &lt;br /&gt;
	[&amp;quot;__T&amp;quot;] = { &amp;quot;˥&amp;quot; },&lt;br /&gt;
	[&amp;quot;__H&amp;quot;] = { &amp;quot;˦&amp;quot; },&lt;br /&gt;
	[&amp;quot;__M&amp;quot;] = { &amp;quot;˧&amp;quot; },&lt;br /&gt;
	[&amp;quot;__L&amp;quot;] = { &amp;quot;˨&amp;quot; },&lt;br /&gt;
	[&amp;quot;__B&amp;quot;] = { &amp;quot;˩&amp;quot; },&lt;br /&gt;
	[&amp;quot;0&amp;quot;] = { &amp;quot;◌&amp;quot; },	-- dotted circle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function escape(text, pattern, list, i)&lt;br /&gt;
	text = mw.ustring.gsub(&lt;br /&gt;
		text,&lt;br /&gt;
		pattern,&lt;br /&gt;
		function(match)&lt;br /&gt;
			list[i] = match&lt;br /&gt;
			local replacement = string.rep(&amp;quot;$&amp;quot;, i)&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			return replacement&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _XSAMPAtoIPA(text)&lt;br /&gt;
	local output = {}&lt;br /&gt;
	local characteristics = {}&lt;br /&gt;
	&lt;br /&gt;
	local escaped = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local toBeEscaped = { &amp;quot;*(.)&amp;quot;, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
	for i, pattern in pairs(toBeEscaped) do&lt;br /&gt;
		text = mw.ustring.gsub(&lt;br /&gt;
			text,&lt;br /&gt;
			pattern,&lt;br /&gt;
			function(match)&lt;br /&gt;
				escaped[i] = match&lt;br /&gt;
				local replacement = string.rep(&amp;quot;$&amp;quot;, i) .. &amp;quot;*&amp;quot;&lt;br /&gt;
				i = i + 1&lt;br /&gt;
				return replacement&lt;br /&gt;
			end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	mw.log(i, #escaped, text)&lt;br /&gt;
	mw.logObject(escaped)&lt;br /&gt;
	&lt;br /&gt;
	while #text &amp;gt; 0 do&lt;br /&gt;
		local substrings = {&lt;br /&gt;
			mw.ustring.sub(text, 1, 4),&lt;br /&gt;
			mw.ustring.sub(text, 1, 3),&lt;br /&gt;
			mw.ustring.sub(text, 1, 2),&lt;br /&gt;
			mw.ustring.sub(text, 1, 1)&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		for i, substring in ipairs(substrings) do&lt;br /&gt;
			local result, IPA, with_descender, has_descender, is_diacritic&lt;br /&gt;
			&lt;br /&gt;
			if data[substring] then&lt;br /&gt;
				result = data[substring]&lt;br /&gt;
				IPA = result[1]&lt;br /&gt;
				with_descender = result.with_descender&lt;br /&gt;
				has_descender = result.has_descender&lt;br /&gt;
				diacritic = result.is_diacritic&lt;br /&gt;
				if with_descender then&lt;br /&gt;
					-- Go backwords through the transcription, skipping any diacritics.&lt;br /&gt;
					local i = 0&lt;br /&gt;
					while characteristics[#characteristics - i].is_diacritic do&lt;br /&gt;
						i = i + 1&lt;br /&gt;
					end&lt;br /&gt;
					--[[	Look at the first non-diacritic symbol before the current symbol.&lt;br /&gt;
							If it has a descender, use the descender form of the current symbol. ]]&lt;br /&gt;
					if characteristics[#characteristics - i].has_descender then&lt;br /&gt;
						IPA = with_descender&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif not substrings[i + 1] then&lt;br /&gt;
				IPA = substring&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if IPA then&lt;br /&gt;
				text = mw.ustring.sub(text, 6 - i)&lt;br /&gt;
				table.insert(output, IPA)&lt;br /&gt;
				table.insert(characteristics, { has_descender = has_descender, is_diacritic = is_diacritic } )&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	output = table.concat(output)&lt;br /&gt;
	&lt;br /&gt;
	output = mw.ustring.gsub(&lt;br /&gt;
		output,&lt;br /&gt;
		&amp;quot;($+)%*&amp;quot;,&lt;br /&gt;
		function(match)&lt;br /&gt;
			local i = string.len(match)&lt;br /&gt;
			return escaped[i]&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.X2IPA(frame)&lt;br /&gt;
	local text&lt;br /&gt;
	&lt;br /&gt;
	if type(frame) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		text = frame.getParent and frame:getParent().args[1] or frame.args and frame.args[1]&lt;br /&gt;
	else&lt;br /&gt;
		text = frame&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return _XSAMPAtoIPA(text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _IPAspan(text)&lt;br /&gt;
	return &amp;quot;&amp;lt;span class=\&amp;quot;IPA\&amp;quot;&amp;gt;&amp;quot;..text..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.example(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local parentargs = frame.getParent and frame:getParent().args&lt;br /&gt;
	&lt;br /&gt;
	local text = parentargs and parentargs[1]&lt;br /&gt;
		or args and args[1]&lt;br /&gt;
		or type(frame) == &amp;quot;string&amp;quot; and frame&lt;br /&gt;
		or error(&amp;quot;No text provided&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local output = { &amp;quot; &amp;lt;code&amp;gt;&amp;amp;#123;&amp;amp;#123;[[mw:Manual:Substitution|subst:]][[Template:x2i|x2i]]&amp;amp;#124;&amp;quot; }&lt;br /&gt;
	&lt;br /&gt;
	if mw.ustring.find(text, &amp;quot;=&amp;quot;) then&lt;br /&gt;
		table.insert(output, &amp;quot;1=&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, text)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;quot;&amp;amp;#125;&amp;amp;#125;&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;quot;\n| &amp;quot;)&lt;br /&gt;
	local IPA = _IPAspan(p.X2IPA(text))&lt;br /&gt;
	table.insert(output, IPA)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Pppery</name></author>
	</entry>
</feed>