<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="vi">
	<id>https://www.tunguyentiengviet.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B4_%C4%91un%3ARuby</id>
	<title>Mô đun:Ruby - Lịch sử thay đổi</title>
	<link rel="self" type="application/atom+xml" href="https://www.tunguyentiengviet.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B4_%C4%91un%3ARuby"/>
	<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;action=history"/>
	<updated>2026-06-01T05:36:17Z</updated>
	<subtitle>Lịch sử thay đổi trang này trên wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=17975&amp;oldid=prev</id>
		<title>Admin: Đã lùi lại sửa đổi 17974 của Admin (thảo luận)</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=17975&amp;oldid=prev"/>
		<updated>2026-03-31T09:39:04Z</updated>

		<summary type="html">&lt;p&gt;Đã lùi lại sửa đổi &lt;a href=&quot;/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Kh%C3%A1c/17974&quot; title=&quot;Đặc biệt:Khác/17974&quot;&gt;17974&lt;/a&gt; của &lt;a href=&quot;/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/Admin&quot; title=&quot;Đặc biệt:Đóng góp/Admin&quot;&gt;Admin&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Admin&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Thảo luận Thành viên:Admin (trang không tồn tại)&quot;&gt;thảo luận&lt;/a&gt;)&lt;/p&gt;
&lt;a href=&quot;https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;amp;diff=17975&amp;amp;oldid=17974&quot;&gt;Xem thay đổi&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=17974&amp;oldid=prev</id>
		<title>Admin vào lúc 09:37, ngày 31 tháng 3 năm 2026</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=17974&amp;oldid=prev"/>
		<updated>2026-03-31T09:37:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;amp;diff=17974&amp;amp;oldid=10633&quot;&gt;Xem thay đổi&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=10633&amp;oldid=prev</id>
		<title>Admin: Đã lùi lại sửa đổi của Admin (thảo luận) quay về phiên bản cuối của imported&gt;Admin</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=10633&amp;oldid=prev"/>
		<updated>2025-04-08T06:43:29Z</updated>

		<summary type="html">&lt;p&gt;Đã lùi lại sửa đổi của &lt;a href=&quot;/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/Admin&quot; title=&quot;Đặc biệt:Đóng góp/Admin&quot;&gt;Admin&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Admin&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Thảo luận Thành viên:Admin (trang không tồn tại)&quot;&gt;thảo luận&lt;/a&gt;) quay về phiên bản cuối của [[User:imported&amp;gt;Admin|imported&amp;gt;Admin]]&lt;/p&gt;
&lt;a href=&quot;https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;amp;diff=10633&amp;amp;oldid=10627&quot;&gt;Xem thay đổi&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=10627&amp;oldid=prev</id>
		<title>Admin vào lúc 22:12, ngày 7 tháng 4 năm 2025</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=10627&amp;oldid=prev"/>
		<updated>2025-04-07T22:12:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;amp;diff=10627&amp;amp;oldid=2906&quot;&gt;Xem thay đổi&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=2906&amp;oldid=prev</id>
		<title>Admin vào lúc 13:21, ngày 2 tháng 11 năm 2023</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=2906&amp;oldid=prev"/>
		<updated>2023-11-02T13:21:55Z</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;vi&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Phiên bản cũ&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Phiên bản lúc 20:21, ngày 2 tháng 11 năm 2023&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-l64&quot;&gt;Dòng 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Dòng 64:&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;---Unicode codepoints for combining Vietnamese tone marks.&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;---Unicode codepoints for combining Vietnamese tone marks.&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;p.combiningToneMarks = mw.ustring.char(&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;p.combiningToneMarks = mw.ustring.char(&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;	0x300, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- à&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;	0x300, -- à&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;	0x301, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- á&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;	0x301, -- á&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;	0x303, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- ã&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;	0x303, -- ã&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;	0x309, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- ả&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;	0x309, -- ả&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;	0x323 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;-- ạ&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;	0x323 &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;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;---Unicode codepoints for combining Vietnamese accent marks.&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;---Unicode codepoints for combining Vietnamese accent marks.&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;p.combiningAccentMarks = mw.ustring.char(&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;p.combiningAccentMarks = mw.ustring.char(&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;	0x302, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- â&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;	0x302, -- â&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;	0x306, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;-- ă&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;	0x306, -- ă&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;	0x31b &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;-- ơ&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;	0x31b &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;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;---Strips Vietnamese diacritical marks from the given text.&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;---Strips Vietnamese diacritical marks from the given text.&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;-- @param tones &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;Set to “0” to leave tone marks intact.&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;-- @param tones &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;Set to “0” to leave tone marks intact.&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;-- @param accents &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;Set to “0” to leave accent marks intact.&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;-- @param accents &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;Set to “0” to leave accent marks intact.&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;-- @param đ &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/del&gt;Set to “0” to leave “Đ” and “đ” intact.&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;-- @param đ &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;Set to “0” to leave “Đ” and “đ” intact.&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;function p.removeDiacritics(text, toneMarks, accentMarks, stroke)&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;function p.removeDiacritics(text, toneMarks, accentMarks, stroke)&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;	if type(text) == &amp;quot;table&amp;quot; then&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;	if type(text) == &amp;quot;table&amp;quot; then&lt;/div&gt;&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-l274&quot;&gt;Dòng 274:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Dòng 274:&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;			if pruby == &amp;#039;link&amp;#039; then&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;			if pruby == &amp;#039;link&amp;#039; then&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;				character = mw.ustring.format(&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;				character = mw.ustring.format(&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;					&quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039;; span style=&#039;font-size: 100%%&#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em; font-size: 120%%;&#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&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;					&quot;&amp;lt;ruby &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class=&#039;zh&#039;&lt;/ins&gt;&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039;; span style=&#039;font-size: 100%%&#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em; font-size: 120%%;&#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;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;					character, character, reading, reading)&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;					character, character, reading, reading)&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;			if pruby == &amp;#039;nocolor&amp;#039; then&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;			if pruby == &amp;#039;nocolor&amp;#039; then&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;				character = mw.ustring.format(&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;				character = mw.ustring.format(&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;					&quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039; style=&#039;color:#000000;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em; font-size: 120%%;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&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;					&quot;&amp;lt;ruby &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class=&#039;zh&#039;&lt;/ins&gt;&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039; style=&#039;color:#000000;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em; font-size: 120%%;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;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;					character, reading)&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;					character, reading)&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;			if pruby ~= &amp;#039;link&amp;#039; and pruby ~= &amp;#039;nocolor&amp;#039; then&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;			if pruby ~= &amp;#039;link&amp;#039; and pruby ~= &amp;#039;nocolor&amp;#039; then&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;				character = mw.ustring.format(&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;				character = mw.ustring.format(&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;					&quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&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;					&quot;&amp;lt;ruby &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class=&#039;zh&#039;&lt;/ins&gt;&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&#039;Hani&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&#039;padding: 0 0.25em;&#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;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;					character, reading)&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;					character, reading)&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;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=738&amp;oldid=prev</id>
		<title>imported&gt;Admin: Đã lùi lại sửa đổi 4253 của Admin (thảo luận)</title>
		<link rel="alternate" type="text/html" href="https://www.tunguyentiengviet.com/index.php?title=M%C3%B4_%C4%91un:Ruby&amp;diff=738&amp;oldid=prev"/>
		<updated>2022-12-01T05:21:26Z</updated>

		<summary type="html">&lt;p&gt;Đã lùi lại sửa đổi 4253 của &lt;a href=&quot;/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/Admin&quot; title=&quot;Đặc biệt:Đóng góp/Admin&quot;&gt;Admin&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Admin&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Thảo luận Thành viên:Admin (trang không tồn tại)&quot;&gt;thảo luận&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Trang mới&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local find = mw.ustring.find&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
---Converts the given text to traditional tone marks.&lt;br /&gt;
function p.toTraditionalTones(text)&lt;br /&gt;
	if type(text) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		text = text.args[1]&lt;br /&gt;
	end&lt;br /&gt;
	return (mw.ustring.gsub(text, &amp;quot;%a+&amp;quot;, function (word)&lt;br /&gt;
		if mw.ustring.match(word, &amp;quot;^qu[yýỳỷỹỵ]$&amp;quot;) then return word end&lt;br /&gt;
		return (mw.ustring.gsub(word, &amp;quot;%a%a$&amp;quot;, {&lt;br /&gt;
			[&amp;quot;oá&amp;quot;] = &amp;quot;óa&amp;quot;, [&amp;quot;oà&amp;quot;] = &amp;quot;òa&amp;quot;, [&amp;quot;oả&amp;quot;] = &amp;quot;ỏa&amp;quot;, [&amp;quot;oã&amp;quot;] = &amp;quot;õa&amp;quot;, [&amp;quot;oạ&amp;quot;] = &amp;quot;ọa&amp;quot;,&lt;br /&gt;
			[&amp;quot;oé&amp;quot;] = &amp;quot;óe&amp;quot;, [&amp;quot;oè&amp;quot;] = &amp;quot;òe&amp;quot;, [&amp;quot;oẻ&amp;quot;] = &amp;quot;ỏe&amp;quot;, [&amp;quot;oẽ&amp;quot;] = &amp;quot;õe&amp;quot;, [&amp;quot;oẹ&amp;quot;] = &amp;quot;ọe&amp;quot;,&lt;br /&gt;
			[&amp;quot;uý&amp;quot;] = &amp;quot;úy&amp;quot;, [&amp;quot;uỳ&amp;quot;] = &amp;quot;ùy&amp;quot;, [&amp;quot;uỷ&amp;quot;] = &amp;quot;ủy&amp;quot;, [&amp;quot;uỹ&amp;quot;] = &amp;quot;ũy&amp;quot;, [&amp;quot;uỵ&amp;quot;] = &amp;quot;ụy&amp;quot;&lt;br /&gt;
		}))&lt;br /&gt;
	end))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Converts the given text to reformed tone marks.&lt;br /&gt;
function p.toReformedTones(text)&lt;br /&gt;
	if type(text) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		text = text.args[1]&lt;br /&gt;
	end&lt;br /&gt;
	return (mw.ustring.gsub(text, &amp;quot;%a+&amp;quot;, function (word)&lt;br /&gt;
		return (mw.ustring.gsub(word, &amp;quot;%a%a$&amp;quot;, {&lt;br /&gt;
			[&amp;quot;óa&amp;quot;] = &amp;quot;oá&amp;quot;, [&amp;quot;òa&amp;quot;] = &amp;quot;oà&amp;quot;, [&amp;quot;ỏa&amp;quot;] = &amp;quot;oả&amp;quot;, [&amp;quot;õa&amp;quot;] = &amp;quot;oã&amp;quot;, [&amp;quot;ọa&amp;quot;] = &amp;quot;oạ&amp;quot;,&lt;br /&gt;
			[&amp;quot;óe&amp;quot;] = &amp;quot;oé&amp;quot;, [&amp;quot;òe&amp;quot;] = &amp;quot;oè&amp;quot;, [&amp;quot;ỏe&amp;quot;] = &amp;quot;oẻ&amp;quot;, [&amp;quot;õe&amp;quot;] = &amp;quot;oẽ&amp;quot;, [&amp;quot;ọe&amp;quot;] = &amp;quot;oẹ&amp;quot;,&lt;br /&gt;
			[&amp;quot;úy&amp;quot;] = &amp;quot;uý&amp;quot;, [&amp;quot;ùy&amp;quot;] = &amp;quot;uỳ&amp;quot;, [&amp;quot;ủy&amp;quot;] = &amp;quot;uỷ&amp;quot;, [&amp;quot;ũy&amp;quot;] = &amp;quot;uỹ&amp;quot;, [&amp;quot;ụy&amp;quot;] = &amp;quot;uỵ&amp;quot;&lt;br /&gt;
		}))&lt;br /&gt;
	end))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Generate alternative orthographies.&lt;br /&gt;
function p.allSpellings(main_spelling, makeLinks)&lt;br /&gt;
	local frame = nil&lt;br /&gt;
	if type(main_spelling) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		frame = main_spelling&lt;br /&gt;
		main_spelling, makeLinks = frame.args[1], frame.args.link&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local xformers = {&lt;br /&gt;
		p.toTraditionalTones, p.toReformedTones,&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local spellings = {}&lt;br /&gt;
	for i, xformer in ipairs(xformers) do&lt;br /&gt;
		local alt_spelling = xformer(main_spelling)&lt;br /&gt;
		if not spellings[alt_spelling] then&lt;br /&gt;
			table.insert(spellings, alt_spelling)&lt;br /&gt;
			spellings[alt_spelling] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if makeLinks then&lt;br /&gt;
		local m_links = require(&amp;quot;Module:links&amp;quot;) -- [[Module:links]]&lt;br /&gt;
		for k, link in ipairs(spellings) do&lt;br /&gt;
			spellings[k] = m_links.full_link({lang = lang, term = link})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return frame and table.concat(spellings, &amp;quot;/&amp;quot;) or spellings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Unicode codepoints for combining Vietnamese tone marks.&lt;br /&gt;
p.combiningToneMarks = mw.ustring.char(&lt;br /&gt;
	0x300,  -- à&lt;br /&gt;
	0x301,  -- á&lt;br /&gt;
	0x303,  -- ã&lt;br /&gt;
	0x309,  -- ả&lt;br /&gt;
	0x323   -- ạ&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
---Unicode codepoints for combining Vietnamese accent marks.&lt;br /&gt;
p.combiningAccentMarks = mw.ustring.char(&lt;br /&gt;
	0x302,  -- â&lt;br /&gt;
	0x306,  -- ă&lt;br /&gt;
	0x31b   -- ơ&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
---Strips Vietnamese diacritical marks from the given text.&lt;br /&gt;
-- @param tones     Set to “0” to leave tone marks intact.&lt;br /&gt;
-- @param accents   Set to “0” to leave accent marks intact.&lt;br /&gt;
-- @param đ         Set to “0” to leave “Đ” and “đ” intact.&lt;br /&gt;
function p.removeDiacritics(text, toneMarks, accentMarks, stroke)&lt;br /&gt;
	if type(text) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		text, toneMarks, accentMarks, stroke = text.args[1],&lt;br /&gt;
			not text.args.tones or tonumber(text.args.tones) == 1,&lt;br /&gt;
			not text.args.accents or tonumber(text.args.accents) == 1,&lt;br /&gt;
			not text.args[&amp;quot;đ&amp;quot;] or tonumber(text.args[&amp;quot;đ&amp;quot;]) == 1&lt;br /&gt;
	end&lt;br /&gt;
	text = mw.ustring.toNFD(text)&lt;br /&gt;
	if toneMarks then&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;quot;[&amp;quot; .. p.combiningToneMarks .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if accentMarks then&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;quot;[&amp;quot; .. p.combiningAccentMarks .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if stroke then&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;quot;[Đđ]&amp;quot;, {[&amp;quot;Đ&amp;quot;] = &amp;quot;D&amp;quot;, [&amp;quot;đ&amp;quot;] = &amp;quot;d&amp;quot;})&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.toNFC(text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Vietnamese letters for use in comp().&lt;br /&gt;
p.letters = &amp;quot;aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆfFgGhHiIìÌỉỈĩĨíÍịỊjJkKlLmMnNoOòÒỏỎõÕóÓọỌôÔồỒổỔỗỖốỐộỘơƠờỜởỞỡỠớỚợỢpPqQrRsStTuUùÙủỦũŨúÚụỤưƯừỪửỬữỮứỨựỰvVwWxXyYỳỲỷỶỹỸýÝỵỴzZ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
---Compare two syllables according to Vietnamese dictionary sorting order.&lt;br /&gt;
function p.compWord(word1, word2)&lt;br /&gt;
	if mw.ustring.find(word1, word2, 1, true) == 0 then return false end&lt;br /&gt;
	if mw.ustring.find(word2, word1, 1, true) == 0 then return true end&lt;br /&gt;
	&lt;br /&gt;
	do&lt;br /&gt;
		local func1, static1, var1 = mw.ustring.gmatch(word1, &amp;quot;[&amp;quot; .. p.letters .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		local func2, static2, var2 = mw.ustring.gmatch(word2, &amp;quot;[&amp;quot; .. p.letters .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		while true do&lt;br /&gt;
			local c1 = func1(static1, var1)&lt;br /&gt;
			local c2 = func2(static2, var2)&lt;br /&gt;
			if c1 == nil or c2 == nil then break end&lt;br /&gt;
			&lt;br /&gt;
			local idx1 = mw.ustring.find(p.letters, c1, 1, true)&lt;br /&gt;
			local idx2 = mw.ustring.find(p.letters, c2, 1, true)&lt;br /&gt;
			if idx1 and idx2 then&lt;br /&gt;
				if idx1 &amp;lt; idx2 then return true end&lt;br /&gt;
				if idx1 &amp;gt; idx2 then return false end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return word1 &amp;lt; word2&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Abbreviations and text for Han tu references (used by p.createRefTag())&lt;br /&gt;
---[[Wiktionary:Beer parlour/2018/December#References for Vietnamese readings listed under Template:vi-readings]]&lt;br /&gt;
p.refAbbreviations = {&lt;br /&gt;
	tvctdhv = &amp;quot;Trần (1999)&amp;quot;;&lt;br /&gt;
	hvttd = &amp;quot;Nguyễn (1974)&amp;quot;;&lt;br /&gt;
	vntd = &amp;quot;Văn Mới (1954)&amp;quot;;&lt;br /&gt;
	tchvtd = &amp;quot;Thiều Chửu (1942)&amp;quot;;&lt;br /&gt;
	tdcndg = &amp;quot;Nguyễn (2014)&amp;quot;,&lt;br /&gt;
	tdcntd = &amp;quot;Nguyễn et al. (2009)&amp;quot;,&lt;br /&gt;
	gdhn = &amp;quot;Trần (2004)&amp;quot;,&lt;br /&gt;
	dtdcn = &amp;quot;Vũ (1998)&amp;quot;,&lt;br /&gt;
	btcn = &amp;quot;Hồ (1976)&amp;quot;,&lt;br /&gt;
	bonet = &amp;quot;Bonet (1899)&amp;quot;,&lt;br /&gt;
	genibrel = &amp;quot;Génibrel (1898)&amp;quot;,&lt;br /&gt;
	taberd = &amp;quot;Taberd &amp;amp; Pigneau de Béhaine (1838)&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---Creates a ref tag containing [[Template:vi-ref]].&lt;br /&gt;
---Expands abbreviations using p.refAbbreviations.&lt;br /&gt;
function p.createRefTag(ref)&lt;br /&gt;
	local refFullName = p.refAbbreviations[ref] or ref&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;quot;ref&amp;quot;,&lt;br /&gt;
		args = {&lt;br /&gt;
			name = ref,&lt;br /&gt;
		},&lt;br /&gt;
		content = mw.ustring.format(&amp;quot;{{vi-ref|%s.}}&amp;quot;, refFullName),&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---[[Template:vi-readings]]&lt;br /&gt;
function p.readings(hanviet, nom, rs, phienthiet, reading)&lt;br /&gt;
	local pagename = mw.title.getCurrentTitle().text&lt;br /&gt;
	if type(hanviet) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		local args = hanviet:getParent().args&lt;br /&gt;
		hanviet, nom, rs, phienthiet, reading =&lt;br /&gt;
			args.hanviet or args.hv, args.nom or args.n, args.rs or args.sort,&lt;br /&gt;
			args.phienthiet or args.phth or args.fanqie, args.reading or args.readings&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	local styles = {&lt;br /&gt;
		{&lt;br /&gt;
			link = &amp;quot;Hán Việt&amp;quot;,&lt;br /&gt;
			cat = &amp;quot;Vietnamese Han tu&amp;quot;,&lt;br /&gt;
			list = hanviet and mw.text.split(hanviet, &amp;quot;%s*,%s*&amp;quot;),&lt;br /&gt;
			phienthiet = phienthiet and mw.text.split(phienthiet, &amp;quot;%s*,%s*&amp;quot;)&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			link = &amp;quot;chữ Nôm|Nôm&amp;quot;,&lt;br /&gt;
			cat = &amp;quot;Vietnamese Nom&amp;quot;,&lt;br /&gt;
			list = nom and mw.text.split(nom, &amp;quot;%s*,%s*&amp;quot;),&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			link = &amp;quot;Hán Nôm&amp;quot;,&lt;br /&gt;
			cat = &amp;quot;Vietnamese Han characters with unconfirmed readings&amp;quot;,&lt;br /&gt;
			list = reading and mw.text.split(reading, &amp;quot;%s*,%s*&amp;quot;)&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	for i, style in ipairs(styles) do&lt;br /&gt;
		if style.list and #style.list &amp;gt; 0 and #style.list[1] &amp;gt; 0 then&lt;br /&gt;
			local readings = style.list&lt;br /&gt;
--			table.sort(readings, p.comp)&lt;br /&gt;
			for j, reading in ipairs(readings) do&lt;br /&gt;
&lt;br /&gt;
				local ref&lt;br /&gt;
				local a, b = mw.ustring.match(reading, &amp;quot;(.-)%s*%-%s*(.+)&amp;quot;)&lt;br /&gt;
				if a then&lt;br /&gt;
					reading, ref = a, b&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local spellings = p.allSpellings(reading, true)&lt;br /&gt;
				readings[j] = table.concat(spellings, &amp;quot;/&amp;quot;)&lt;br /&gt;
				&lt;br /&gt;
				-- Linking of &amp;quot;切&amp;quot; to &amp;quot;fanqie&amp;quot; for English explanation&lt;br /&gt;
				if style.phienthiet and style.phienthiet[j] then&lt;br /&gt;
					pruby = &amp;quot;link&amp;quot;&lt;br /&gt;
					local ruby = p.ruby(mw.ustring.match(mw.text.trim(style.phienthiet[j]),&lt;br /&gt;
						&amp;quot;(%a+) +(.+)&amp;quot;))&lt;br /&gt;
					pruby = {}&lt;br /&gt;
					if ruby then&lt;br /&gt;
						pruby = &amp;quot;nocolor&amp;quot;&lt;br /&gt;
						local suffix = p.ruby(&amp;quot;切&amp;quot;, &amp;quot;thiết&amp;quot;)&lt;br /&gt;
						pruby = {}&lt;br /&gt;
						readings[j] = mw.ustring.format(&amp;quot;%s (%s[[fanqie#English|%s]])&amp;quot;,&lt;br /&gt;
							readings[j], ruby, suffix)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- References&lt;br /&gt;
				if ref then&lt;br /&gt;
					for ref in mw.text.gsplit(ref, &amp;quot;%s*;%s*&amp;quot;) do&lt;br /&gt;
						readings[j] = readings[j] .. p.createRefTag(ref)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #readings &amp;gt; 0 then&lt;br /&gt;
				local sortkey = rs or mw.title.getCurrentTitle().text&lt;br /&gt;
				readings = table.concat(readings, &amp;quot;, &amp;quot;)&lt;br /&gt;
				table.insert(lines, mw.ustring.format(&amp;quot;&amp;lt;span class=&amp;#039;Hani&amp;#039; lang=&amp;#039;vi&amp;#039; style=&amp;#039;font-size: 120%%;font-style: normal!important;&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;: &amp;#039;&amp;#039;&amp;#039;[[%s]]&amp;#039;&amp;#039;&amp;#039; readings: %s[[Category:%s|%s]] [[Category:Vietnamese lemmas]] [[Category:Vietnamese Han characters]]&amp;lt;/br&amp;gt;&amp;quot;,&lt;br /&gt;
					pagename, style.link, readings, style.cat, sortkey))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---[[Template:vi-ruby]]&lt;br /&gt;
function p.ruby(characters, readings, mark, alts)&lt;br /&gt;
	if type(characters) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		local args = characters:getParent().args&lt;br /&gt;
		characters, readings, mark, alts =&lt;br /&gt;
			args[1] or &amp;quot;&amp;quot;,&lt;br /&gt;
			args[2] or &amp;quot;&amp;quot;,&lt;br /&gt;
			args.mark or mw.title.getCurrentTitle().text,&lt;br /&gt;
			((args.alts and mw.text.split(args.alts, &amp;quot;%s+&amp;quot;)) or&lt;br /&gt;
				(args.ids and mw.text.split(args.ids, &amp;quot;%s+&amp;quot;)) or {})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not readings then&lt;br /&gt;
		return characters&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	readings = mw.text.split(readings, &amp;quot;[^&amp;quot; .. p.letters .. &amp;quot;]+&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	local character_idx = 1&lt;br /&gt;
	local alt_idx = 1&lt;br /&gt;
	for character in mw.ustring.gmatch(characters, &amp;quot;.&amp;quot;) do&lt;br /&gt;
		local is_alt = false&lt;br /&gt;
		if character == &amp;quot;*&amp;quot; and alts[alt_idx] then&lt;br /&gt;
			character = alts[alt_idx]&lt;br /&gt;
			is_alt = true&lt;br /&gt;
			alt_idx = alt_idx + 1&lt;br /&gt;
		end&lt;br /&gt;
		if is_alt or (mw.ustring.match(character, &amp;quot;^%a$&amp;quot;) and not character:match(&amp;quot;^%w$&amp;quot;)) then&lt;br /&gt;
			local reading = readings[character_idx]&lt;br /&gt;
			if mark and character == mark then&lt;br /&gt;
				character = mw.ustring.format(&amp;quot;&amp;lt;mark&amp;gt;%s&amp;lt;/mark&amp;gt;&amp;quot;, character)&lt;br /&gt;
				reading = mw.ustring.format(&amp;quot;&amp;lt;mark&amp;gt;%s&amp;lt;/mark&amp;gt;&amp;quot;, reading)&lt;br /&gt;
			end&lt;br /&gt;
			if pruby == &amp;#039;link&amp;#039; then&lt;br /&gt;
				character = mw.ustring.format(&lt;br /&gt;
					&amp;quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&amp;#039;Hani&amp;#039;; span style=&amp;#039;font-size: 100%%&amp;#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&amp;#039;padding: 0 0.25em; font-size: 120%%;&amp;#039;&amp;gt;[[%s#Vietnamese|%s]]&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&amp;quot;,&lt;br /&gt;
					character, character, reading, reading)&lt;br /&gt;
			end&lt;br /&gt;
			if pruby == &amp;#039;nocolor&amp;#039; then&lt;br /&gt;
				character = mw.ustring.format(&lt;br /&gt;
					&amp;quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&amp;#039;Hani&amp;#039; style=&amp;#039;color:#000000;&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&amp;#039;padding: 0 0.25em; font-size: 120%%;&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&amp;quot;,&lt;br /&gt;
					character, reading)&lt;br /&gt;
			end&lt;br /&gt;
			if pruby ~= &amp;#039;link&amp;#039; and pruby ~= &amp;#039;nocolor&amp;#039; then&lt;br /&gt;
				character = mw.ustring.format(&lt;br /&gt;
					&amp;quot;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;&amp;lt;span class=&amp;#039;Hani&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rb&amp;gt;&amp;lt;rp&amp;gt;(&amp;lt;/rp&amp;gt;&amp;lt;rt&amp;gt;&amp;lt;span style=&amp;#039;padding: 0 0.25em;&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;rp&amp;gt;)&amp;lt;/rp&amp;gt;&amp;lt;/ruby&amp;gt;&amp;quot;,&lt;br /&gt;
					character, reading)&lt;br /&gt;
			end&lt;br /&gt;
			character_idx = character_idx + 1&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, character)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.format(&amp;quot;&amp;lt;span lang=&amp;#039;vi&amp;#039; style=&amp;#039;font-size: 120%%;font-style: normal!important;&amp;#039;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot;, table.concat(result))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.hantutab()&lt;br /&gt;
	local hantu = mw.ustring.gsub(mw.title.getCurrentTitle().text, &amp;#039;[^一-鿿㐀-䶿﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧-﨩𠀀-𪛟𪜀-𮯯𰀀-𱍏]&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	local table_head = &amp;#039;&amp;lt;table class=&amp;quot;floatright wikitable&amp;quot; style=&amp;quot;text-align:center; font-size:small;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;&amp;#039; .. &lt;br /&gt;
		mw.ustring.len(hantu) .. &lt;br /&gt;
		&amp;#039;&amp;quot; style=&amp;quot;font-weight:normal;&amp;quot;&amp;gt;[[Hán tự]] in this term&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr lang=&amp;quot;vi&amp;quot; class=&amp;quot;Hani&amp;quot; style=&amp;quot;font-size:2em; background:white; line-height:1em;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
	return table_head .. &lt;br /&gt;
		mw.ustring.gsub(hantu, &amp;#039;(.)&amp;#039;, &amp;#039;&amp;lt;td style=&amp;quot;padding:0.5em;&amp;quot;&amp;gt;[[%1#Vietnamese|%1]]&amp;lt;/td&amp;gt;&amp;#039;) .. &lt;br /&gt;
		&amp;#039;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Returns the categories indicated by the given wikitext.&lt;br /&gt;
function p.classifierCategories(frame)&lt;br /&gt;
	local src = frame.args[1]&lt;br /&gt;
	local classifiers = {}&lt;br /&gt;
	for classifier in mw.ustring.gmatch(mw.ustring.gsub(src, &amp;quot;&amp;lt;[^&amp;gt;]-&amp;gt;&amp;quot;, &amp;quot;&amp;quot;), &amp;quot;[&amp;quot; .. p.letters .. &amp;quot;]+&amp;quot;) do&lt;br /&gt;
		if classifier ~= &amp;quot;l&amp;quot; and classifier ~= &amp;quot;vi&amp;quot; and classifier ~= &amp;quot;vi-l&amp;quot; and&lt;br /&gt;
				classifier ~= &amp;quot;Vietnamese&amp;quot; then&lt;br /&gt;
			local cat = mw.ustring.format(&amp;quot;[[Category:Vietnamese nouns classified by %s]]&amp;quot;,&lt;br /&gt;
				classifier)&lt;br /&gt;
			table.insert(classifiers, cat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(classifiers)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.new(frame)&lt;br /&gt;
	local title = mw.title.getCurrentTitle().subpageText&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local pos = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	local def = args[2] or &amp;quot;{{rfdef|vi}}&amp;quot;&lt;br /&gt;
	local pos2 = args[3] or (args[4] and &amp;quot;&amp;quot; or false)&lt;br /&gt;
	local def2 = args[4] or &amp;quot;{{rfdef|vi}}&amp;quot;&lt;br /&gt;
	local pos3 = args[5] or (args[6] and &amp;quot;&amp;quot; or false)&lt;br /&gt;
	local def3 = args[6] or &amp;quot;{{rfdef|vi}}&amp;quot;&lt;br /&gt;
	local etym = args[&amp;quot;e&amp;quot;] or false&lt;br /&gt;
	local head = args[&amp;quot;head&amp;quot;] or false&lt;br /&gt;
	local cat = args[&amp;quot;cat&amp;quot;] or false&lt;br /&gt;
	local reg = args[&amp;quot;reg&amp;quot;] or false&lt;br /&gt;
	local cls = args[&amp;quot;cls&amp;quot;] or false&lt;br /&gt;
	local rdp = args[&amp;quot;rdp&amp;quot;] or false&lt;br /&gt;
	local nom = args[&amp;quot;nom&amp;quot;] or false&lt;br /&gt;
	local pic = args[&amp;quot;pic&amp;quot;] or false&lt;br /&gt;
	local picc = args[&amp;quot;picc&amp;quot;] or false&lt;br /&gt;
	&lt;br /&gt;
	nom = nom and mw.ustring.gsub(nom, &amp;quot;(.)&amp;quot;, &amp;quot;[[%1]], &amp;quot;) or false&lt;br /&gt;
	nom = nom and mw.ustring.gsub(nom, &amp;quot;, $&amp;quot;, &amp;quot;&amp;quot;) or false&lt;br /&gt;
	if args[&amp;quot;h&amp;quot;] then&lt;br /&gt;
		etym = &amp;quot;{{vi-etym-sino|&amp;quot; .. args[&amp;quot;h&amp;quot;] .. &amp;quot;}}.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if not etym and mw.ustring.match(title, &amp;quot; &amp;quot;) then&lt;br /&gt;
		etym = &amp;quot;{{com|vi&amp;quot;&lt;br /&gt;
		for word in mw.text.gsplit(title, &amp;quot; &amp;quot;) do&lt;br /&gt;
			etym = etym .. &amp;quot;|&amp;quot; .. word&lt;br /&gt;
		end&lt;br /&gt;
		etym = etym .. &amp;quot;}}.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if etym == &amp;quot;-&amp;quot; then etym = false end&lt;br /&gt;
	if etym then etym = mw.ustring.gsub(etym, &amp;quot;^%&amp;lt;&amp;quot;, &amp;quot;From&amp;quot;) end&lt;br /&gt;
	&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	local function genTitle(text)&lt;br /&gt;
		local pos_title = {&lt;br /&gt;
			[&amp;quot;&amp;quot;] = &amp;quot;Noun&amp;quot;, [&amp;quot;n&amp;quot;] = &amp;quot;Noun&amp;quot;, [&amp;quot;pn&amp;quot;] = &amp;quot;Proper noun&amp;quot;, [&amp;quot;propn&amp;quot;] = &amp;quot;Proper noun&amp;quot;, [&amp;quot;pron&amp;quot;] = &amp;quot;Pronoun&amp;quot;,&lt;br /&gt;
			[&amp;quot;v&amp;quot;] = &amp;quot;Verb&amp;quot;, [&amp;quot;vf&amp;quot;] = &amp;quot;Verb&amp;quot;, [&amp;quot;a&amp;quot;] = &amp;quot;Adjective&amp;quot;, [&amp;quot;adj&amp;quot;] = &amp;quot;Adjective&amp;quot;, [&amp;quot;adv&amp;quot;] = &amp;quot;Adverb&amp;quot;,&lt;br /&gt;
			[&amp;quot;prep&amp;quot;] = &amp;quot;Preposition&amp;quot;, [&amp;quot;postp&amp;quot;] = &amp;quot;Postposition&amp;quot;, [&amp;quot;conj&amp;quot;] = &amp;quot;Conjunction&amp;quot;,&lt;br /&gt;
			[&amp;quot;part&amp;quot;] = &amp;quot;Particle&amp;quot;, [&amp;quot;suf&amp;quot;] = &amp;quot;Suffix&amp;quot;,&lt;br /&gt;
			[&amp;quot;prov&amp;quot;] = &amp;quot;Proverb&amp;quot;, [&amp;quot;id&amp;quot;] = &amp;quot;Idiom&amp;quot;, [&amp;quot;ph&amp;quot;] = &amp;quot;Phrase&amp;quot;, [&amp;quot;intj&amp;quot;] = &amp;quot;Interjection&amp;quot;, [&amp;quot;interj&amp;quot;] = &amp;quot;Interjection&amp;quot;,&lt;br /&gt;
			[&amp;quot;cl&amp;quot;] = &amp;quot;Classifier&amp;quot;, [&amp;quot;cls&amp;quot;] = &amp;quot;Classifier&amp;quot;, [&amp;quot;num&amp;quot;] = &amp;quot;Numeral&amp;quot;, [&amp;quot;abb&amp;quot;] = &amp;quot;Abbreviation&amp;quot;, [&amp;quot;deter&amp;quot;] = &amp;quot;Determiner&amp;quot;&lt;br /&gt;
		};&lt;br /&gt;
		return pos_title[text] or mw.ustring.upper(sub(text, 1, 1)) .. sub(text, 2, -1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function genHead(text)&lt;br /&gt;
		local pos_head = {&lt;br /&gt;
			[&amp;quot;&amp;quot;] = &amp;quot;noun&amp;quot;, [&amp;quot;n&amp;quot;] = &amp;quot;noun&amp;quot;, [&amp;quot;pn&amp;quot;] = &amp;quot;proper noun&amp;quot;, [&amp;quot;propn&amp;quot;] = &amp;quot;proper noun&amp;quot;, [&amp;quot;v&amp;quot;] = &amp;quot;verb&amp;quot;, [&amp;quot;vf&amp;quot;] = &amp;quot;verb form&amp;quot;, [&amp;quot;a&amp;quot;] = &amp;quot;adj&amp;quot;,&lt;br /&gt;
			[&amp;quot;postp&amp;quot;] = &amp;quot;post&amp;quot;, [&amp;quot;conj&amp;quot;] = &amp;quot;conj&amp;quot;, [&amp;quot;part&amp;quot;] = &amp;quot;particle&amp;quot;, [&amp;quot;pron&amp;quot;] = &amp;quot;pronoun&amp;quot;,&lt;br /&gt;
			[&amp;quot;prov&amp;quot;] = &amp;quot;proverb&amp;quot;, [&amp;quot;id&amp;quot;] = &amp;quot;idiom&amp;quot;, [&amp;quot;ph&amp;quot;] = &amp;quot;phrase&amp;quot;, [&amp;quot;intj&amp;quot;] = &amp;quot;interj&amp;quot;,&lt;br /&gt;
			[&amp;quot;abb&amp;quot;] = &amp;quot;abbr&amp;quot;, [&amp;quot;cl&amp;quot;] = &amp;quot;classifier&amp;quot;, [&amp;quot;deter&amp;quot;] = &amp;quot;det&amp;quot;&lt;br /&gt;
		};&lt;br /&gt;
		return pos_head[text] or text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function other(class, title, args)&lt;br /&gt;
		local code = &amp;quot;&amp;quot;&lt;br /&gt;
		if class == &amp;quot;der&amp;quot; and args[class] then&lt;br /&gt;
			code = code .. &amp;quot;\n\n===&amp;quot; .. title .. &amp;quot;===\n{{col3|vi|&amp;quot; .. args[class]&lt;br /&gt;
			i = 2&lt;br /&gt;
			while args[class .. i] do&lt;br /&gt;
				code = code .. &amp;quot;|&amp;quot; .. args[class .. i]&lt;br /&gt;
				i = i + 1&lt;br /&gt;
			end&lt;br /&gt;
			code = code .. &amp;quot;}}&amp;quot;&lt;br /&gt;
		elseif args[class] then&lt;br /&gt;
			code = code .. &amp;quot;\n\n===&amp;quot; .. title .. &amp;quot;===\n* {{l|vi|&amp;quot; .. args[class] .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			i = 2&lt;br /&gt;
			&lt;br /&gt;
			while args[class .. i] do&lt;br /&gt;
				code = code .. &amp;quot;\n* {{l|vi|&amp;quot; .. args[class .. i] .. &amp;quot;}}&amp;quot;&lt;br /&gt;
				i = i + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return code&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	result = result .. &amp;quot;==Vietnamese==&amp;quot;&lt;br /&gt;
	if args[&amp;quot;wp&amp;quot;] then result = result .. &amp;quot;\n{{wikipedia|lang=vi&amp;quot; .. &lt;br /&gt;
		(args[&amp;quot;wp&amp;quot;] == &amp;quot;y&amp;quot; and &amp;quot;&amp;quot; or &amp;quot;|&amp;quot; .. args[&amp;quot;wp&amp;quot;]) .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
	if pic then result = result .. &amp;quot;\n[[File:&amp;quot; .. pic .. &amp;quot;|thumb|&amp;quot; .. &lt;br /&gt;
		(picc or mw.ustring.gsub(title, &amp;#039;^%l&amp;#039;, mw.ustring.upper) .. &amp;quot;.&amp;quot;) .. &amp;quot;]]&amp;quot; end&lt;br /&gt;
	result = result .. other(&amp;quot;alt&amp;quot;, &amp;quot;Alternative forms&amp;quot;, args)&lt;br /&gt;
	&lt;br /&gt;
	if etym then result = result .. &amp;quot;\n\n===Etymology===\n&amp;quot; .. etym end&lt;br /&gt;
	&lt;br /&gt;
	result = result .. &amp;quot;\n\n===Pronunciation===\n{{vi-IPA}}&amp;quot;&lt;br /&gt;
	result = result .. &amp;quot;\n\n===&amp;quot; .. genTitle(pos) .. &amp;quot;===\n{{vi-&amp;quot; .. genHead(pos) .. (head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		((genHead(pos) == &amp;quot;noun&amp;quot; and cls) and &amp;quot;|cls=&amp;quot; .. cls or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(((genHead(pos) == &amp;quot;adj&amp;quot; or genHead(pos) == &amp;quot;verb&amp;quot; or genHead(pos) == &amp;quot;adv&amp;quot;) and rdp) and &amp;quot;|rdp=&amp;quot; .. rdp or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(nom and &amp;quot;|&amp;quot; .. nom or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		&amp;quot;}}\n\n# &amp;quot; .. def&lt;br /&gt;
		&lt;br /&gt;
	result = result .. other(&amp;quot;syn&amp;quot;, &amp;quot;=Synonyms=&amp;quot;, args)&lt;br /&gt;
	result = result .. other(&amp;quot;ant&amp;quot;, &amp;quot;=Antonyms=&amp;quot;, args)&lt;br /&gt;
	result = result .. other(&amp;quot;der&amp;quot;, &amp;quot;=Derived terms=&amp;quot;, args)&lt;br /&gt;
	result = result .. other(&amp;quot;also&amp;quot;, &amp;quot;=See also=&amp;quot;, args)&lt;br /&gt;
	&lt;br /&gt;
	if pos2 then&lt;br /&gt;
		result = result .. &amp;quot;\n\n===&amp;quot; .. genTitle(pos2) .. &amp;quot;===\n{{vi-&amp;quot; .. genHead(pos2) .. (head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		((genHead(pos) == &amp;quot;noun&amp;quot; and cls) and &amp;quot;|cls=&amp;quot; .. cls or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(((genHead(pos2) == &amp;quot;adj&amp;quot; or genHead(pos2) == &amp;quot;verb&amp;quot; or genHead(pos2) == &amp;quot;adv&amp;quot;) and rdp) and &amp;quot;|rdp=&amp;quot; .. rdp or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(nom and &amp;quot;|&amp;quot; .. nom or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		&amp;quot;}}\n\n# &amp;quot; .. def2&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if pos3 then&lt;br /&gt;
		result = result .. &amp;quot;\n\n===&amp;quot; .. genTitle(pos3) .. &amp;quot;===\n{{vi-&amp;quot; .. genHead(pos3) .. (head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		((genHead(pos) == &amp;quot;noun&amp;quot; and cls) and &amp;quot;|cls=&amp;quot; .. cls or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(((genHead(pos3) == &amp;quot;adj&amp;quot; or genHead(pos3) == &amp;quot;verb&amp;quot; or genHead(pos3) == &amp;quot;adv&amp;quot;) and rdp) and &amp;quot;|rdp=&amp;quot; .. rdp or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		(nom and &amp;quot;|&amp;quot; .. nom or &amp;quot;&amp;quot;) .. &lt;br /&gt;
		&amp;quot;}}\n\n# &amp;quot; .. def3&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if cat then result = result .. &amp;quot;\n\n{{C|vi|&amp;quot; .. cat .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.new_der(frame)&lt;br /&gt;
	local title = mw.title.getCurrentTitle().subpageText&lt;br /&gt;
	local data_module = require(&amp;quot;Module:vi/vocab-list&amp;quot;)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for _, arg in ipairs(args) do&lt;br /&gt;
		table.insert(result, arg)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, word in ipairs(data_module) do&lt;br /&gt;
		if find(word, title) and word ~= title and not find(word, title .. &amp;quot;[^ ]&amp;quot;) and not find(word, &amp;quot;[^ ]&amp;quot; .. title) then&lt;br /&gt;
			table.insert(result, word)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local hash, res = {}, {}&lt;br /&gt;
	for _, element in ipairs(result) do&lt;br /&gt;
		if not hash[element] then&lt;br /&gt;
			res[#res + 1] = element&lt;br /&gt;
			hash[element] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local vi_sort_module = require(&amp;quot;Module:vi-sortkey&amp;quot;)&lt;br /&gt;
	local makeSortKey = require(&amp;quot;Module:fun&amp;quot;).memoize(vi_sort_module.makeSortKey)&lt;br /&gt;
	table.sort(res, function(term1, term2) return makeSortKey(term1) &amp;lt; makeSortKey(term2) end)&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;{{vi-der|&amp;quot; .. table.concat(res, &amp;quot;|&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.derived(frame)&lt;br /&gt;
	local tu_lay_note = &amp;quot;&amp;lt;span style=\&amp;quot;padding-left:4px; padding-right:4px\&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=\&amp;quot;background:#ffffe0\&amp;quot;&amp;gt;(&amp;#039;&amp;#039;[[từ láy]]&amp;#039;&amp;#039;)&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	local m_columns = require(&amp;quot;Module:columns&amp;quot;)&lt;br /&gt;
	local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;vi&amp;quot;)&lt;br /&gt;
	local m_links = require(&amp;quot;Module:links&amp;quot;)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local pagename = mw.title.getCurrentTitle().text&lt;br /&gt;
	local result = {}&lt;br /&gt;
	local length = 0&lt;br /&gt;
	&lt;br /&gt;
	unfold = args[&amp;quot;unfold&amp;quot;] and true or false&lt;br /&gt;
	title = args[&amp;quot;title&amp;quot;] or false&lt;br /&gt;
	title_text = title or &amp;quot;Derived terms&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for i, word in ipairs(args) do&lt;br /&gt;
		word, is_tu_lay = mw.ustring.gsub(word, &amp;quot;%:tl&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		tu_lay = is_tu_lay &amp;gt; 0 and tu_lay_note or &amp;quot;&amp;quot;&lt;br /&gt;
		local word_parts = mw.text.split(mw.ustring.gsub(word, &amp;quot;\n&amp;quot;, &amp;quot;&amp;quot; ), &amp;quot;:&amp;quot;)&lt;br /&gt;
		table.insert(result, m_links.full_link({ &lt;br /&gt;
			lang = lang, &lt;br /&gt;
			term = word_parts[1], &lt;br /&gt;
			gloss = word_parts[2] or nil }) ..&lt;br /&gt;
			&lt;br /&gt;
		tu_lay)&lt;br /&gt;
		&lt;br /&gt;
		length = math.max(mw.ustring.len(word), length)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &lt;br /&gt;
		m_columns.create_table(&lt;br /&gt;
			(length &amp;gt; 15 and 2 or 3), &lt;br /&gt;
			result, &lt;br /&gt;
			1, &lt;br /&gt;
			&amp;quot;#F5F5FF&amp;quot;,&lt;br /&gt;
			((unfold or #result &amp;lt; 7) and false or true), &lt;br /&gt;
			&amp;quot;Derived terms&amp;quot;,&lt;br /&gt;
			title_text, &lt;br /&gt;
			nil, &lt;br /&gt;
			nil,&lt;br /&gt;
			lang&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Admin</name></author>
	</entry>
</feed>