<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Ako</id>
	<title>Module:ko - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Ako"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:ko&amp;action=history"/>
	<updated>2026-05-23T11:08:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:ko&amp;diff=514149&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local m_str_utils = require(&quot;Module:string utilities&quot;)  local codepoint = m_str_utils.codepoint local concat = table.concat local floor = math.floor local gmatch = m_str_utils.gmatch local gsplit = m_str_utils.gsplit local gsub = m_str_utils.gsub local insert = table.insert local len = m_str_utils.len local match = m_str_utils.match local min = math.min local remove = table.remove local sub = m_str_utils.sub local u = m_str_utils.char local upper = m_s...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:ko&amp;diff=514149&amp;oldid=prev"/>
		<updated>2026-05-07T19:04:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local m_str_utils = require(&amp;quot;Module:string utilities&amp;quot;)  local codepoint = m_str_utils.codepoint local concat = table.concat local floor = math.floor local gmatch = m_str_utils.gmatch local gsplit = m_str_utils.gsplit local gsub = m_str_utils.gsub local insert = table.insert local len = m_str_utils.len local match = m_str_utils.match local min = math.min local remove = table.remove local sub = m_str_utils.sub local u = m_str_utils.char local upper = m_s...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local m_str_utils = require(&amp;quot;Module:string utilities&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local codepoint = m_str_utils.codepoint&lt;br /&gt;
local concat = table.concat&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local gmatch = m_str_utils.gmatch&lt;br /&gt;
local gsplit = m_str_utils.gsplit&lt;br /&gt;
local gsub = m_str_utils.gsub&lt;br /&gt;
local insert = table.insert&lt;br /&gt;
local len = m_str_utils.len&lt;br /&gt;
local match = m_str_utils.match&lt;br /&gt;
local min = math.min&lt;br /&gt;
local remove = table.remove&lt;br /&gt;
local sub = m_str_utils.sub&lt;br /&gt;
local u = m_str_utils.char&lt;br /&gt;
local upper = m_str_utils.upper&lt;br /&gt;
&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;ko&amp;quot;)&lt;br /&gt;
export.lang = lang&lt;br /&gt;
local HangChars = require(&amp;quot;Module:scripts&amp;quot;).getByCode(&amp;quot;Hang&amp;quot;):getCharacters()&lt;br /&gt;
local HaniChars = require(&amp;quot;Module:scripts&amp;quot;).getByCode(&amp;quot;Hani&amp;quot;):getCharacters()&lt;br /&gt;
&lt;br /&gt;
-- makes hanjatab automatically&lt;br /&gt;
function export.hanjatab()&lt;br /&gt;
	local hanja = gsub(mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename, &amp;#039;[^&amp;#039; .. HaniChars .. &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;
		len(hanja) .. &lt;br /&gt;
		&amp;#039;&amp;quot; style=&amp;quot;font-weight:normal;&amp;quot;&amp;gt;[[hanja|Hanja]] in this term&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr lang=&amp;quot;ko&amp;quot; class=&amp;quot;Kore&amp;quot; style=&amp;quot;font-size:2em; background:var(--wikt-palette-white,#ffffff); color:inherit; line-height:1em;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
	return table_head .. &lt;br /&gt;
		gsub(hanja, &amp;#039;(.)&amp;#039;, &amp;#039;&amp;lt;td style=&amp;quot;padding:0.5em;&amp;quot;&amp;gt;[[%1#Korean|%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;
-- return only non-hangeul contained in text&lt;br /&gt;
function export.remove_hangeul(f)&lt;br /&gt;
	local nonhangeul = gsub(f.args[1], &amp;#039;[&amp;#039; .. HangChars .. &amp;#039;]&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	return nonhangeul&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.boldify(f)&lt;br /&gt;
	local pagename = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
	hangul = f.args[1]&lt;br /&gt;
	if match(hangul, pagename) and not match(hangul, &amp;quot;&amp;#039;&amp;quot;) then&lt;br /&gt;
		hangul = gsub(hangul, pagename, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. pagename .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return hangul&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.usex_hangul(f)&lt;br /&gt;
	local pagename = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
	hangul = f.args[1]&lt;br /&gt;
	if match(hangul, pagename) and not match(hangul, &amp;quot;&amp;#039;&amp;quot;) then&lt;br /&gt;
		hangul = gsub(hangul, pagename, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. pagename .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	i = 1&lt;br /&gt;
	local front, back = &amp;#039;&amp;lt;b&amp;gt;&amp;#039;, &amp;#039;&amp;lt;/b&amp;gt;&amp;#039;&lt;br /&gt;
	for bold in gmatch(hangul, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;) do&lt;br /&gt;
		hangul = gsub(hangul, &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;, (i % 2 == 1 and front or back), 1)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	hangul = gsub(hangul, &amp;#039;%^&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	return hangul&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.link(arg)&lt;br /&gt;
	local args, distances = {}, {}&lt;br /&gt;
	local m_pron = require(&amp;quot;Module:ko-translit&amp;quot;)&lt;br /&gt;
	local curr_distance, closest_match = 1000, 0&lt;br /&gt;
	local word, translit, definition, hanja, note = false, false, false, false, false&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, 4, 1 do&lt;br /&gt;
		if arg[i] and arg[i] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			insert(args, arg[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local curr_hangul_level, closest_hangul = 0, 0&lt;br /&gt;
	for i, parameter in ipairs(args) do&lt;br /&gt;
		local _, tentative_hangul_level = gsub(parameter, &amp;quot;[&amp;quot; .. HangChars .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		if tentative_hangul_level &amp;gt; curr_hangul_level then&lt;br /&gt;
			curr_hangul_level = tentative_hangul_level&lt;br /&gt;
			closest_hangul = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if curr_hangul_level &amp;gt; 0 then&lt;br /&gt;
		word = args[closest_hangul]&lt;br /&gt;
		remove(args, closest_hangul)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function compute_distance(str1, str2)&lt;br /&gt;
		local len1, len2 = #str1, #str2&lt;br /&gt;
		local char1, char2, distance = {}, {}, {}&lt;br /&gt;
		&lt;br /&gt;
		str1:gsub(&amp;#039;.&amp;#039;, function (c)&lt;br /&gt;
			insert(char1, c) end)&lt;br /&gt;
		&lt;br /&gt;
		str2:gsub(&amp;#039;.&amp;#039;, function (c)&lt;br /&gt;
			insert(char2, c) end)&lt;br /&gt;
		&lt;br /&gt;
		for i = 0, len1 do&lt;br /&gt;
			distance[i] = {}&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i = 0, len1 do&lt;br /&gt;
			distance[i][0] = i&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i = 0, len2 do&lt;br /&gt;
			distance[0][i] = i&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i = 1, len1 do&lt;br /&gt;
			for j = 1, len2 do&lt;br /&gt;
				distance[i][j] = min(&lt;br /&gt;
					distance[i-1][j] + 1,&lt;br /&gt;
					distance[i][j-1] + 1,&lt;br /&gt;
					distance[i-1][j-1] + (char1[i] == char2[j] and 0 or 1)&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		return distance[len1][len2]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local m_link = require(&amp;quot;Module:links&amp;quot;)&lt;br /&gt;
	local test_translit = m_pron.tr_revised(m_link.remove_links(word or arg[1])) or &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	if arg[5] and arg[5] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		note = arg[5]&lt;br /&gt;
	elseif arg[&amp;quot;note&amp;quot;] and arg[&amp;quot;note&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		note = arg[&amp;quot;note&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if arg[&amp;quot;gloss&amp;quot;] then&lt;br /&gt;
		definition = arg[&amp;quot;gloss&amp;quot;]&lt;br /&gt;
		arg[&amp;quot;gloss&amp;quot;] = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, parameter in ipairs(args) do&lt;br /&gt;
		if not match(parameter, &amp;#039;[&amp;#039; .. HangChars .. HaniChars .. &amp;#039;]&amp;#039;) then&lt;br /&gt;
			local tentative_distance = compute_distance(test_translit, parameter)&lt;br /&gt;
			if tentative_distance &amp;lt; curr_distance then&lt;br /&gt;
				curr_distance = tentative_distance&lt;br /&gt;
				closest_match = i&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if curr_distance &amp;lt; 3 and #args &amp;gt; 1 then&lt;br /&gt;
		translit = args[closest_match]&lt;br /&gt;
		remove(args, closest_match)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, parameter in ipairs(args) do&lt;br /&gt;
		if match(parameter, &amp;quot;[&amp;quot; .. HaniChars .. &amp;quot;]&amp;quot;) then&lt;br /&gt;
			hanja = parameter&lt;br /&gt;
			remove(args, i)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not hanja and not word then&lt;br /&gt;
		word = args[1]&lt;br /&gt;
		remove(args, 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #args &amp;gt; 1 then&lt;br /&gt;
		translit = args[1]&lt;br /&gt;
		definition = args[2]&lt;br /&gt;
	&lt;br /&gt;
	elseif #args &amp;gt; 0 then&lt;br /&gt;
		if definition then&lt;br /&gt;
			translit = args[1]&lt;br /&gt;
		else&lt;br /&gt;
			definition = args[1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if hanja and not match(hanja, &amp;quot;[%[%]]&amp;quot;) then&lt;br /&gt;
		for hanja_word in gmatch(hanja, &amp;quot;[&amp;quot; .. HaniChars .. &amp;quot;]+&amp;quot;) do&lt;br /&gt;
			hanja = gsub(hanja, hanja_word, &amp;quot;[[&amp;quot; .. hanja_word .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		for hangul_word in gmatch(hanja, &amp;quot;[&amp;quot; .. HangChars .. &amp;quot;]+&amp;quot;) do&lt;br /&gt;
			hanja = gsub(hanja, hangul_word, &amp;quot;[[&amp;quot; .. hangul_word .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		hanja = gsub(hanja, &amp;quot;%[%[%[%[&amp;quot;, &amp;quot;[[&amp;quot;)&lt;br /&gt;
		hanja = gsub(hanja, &amp;quot;%]%]%]%]&amp;quot;, &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local tr = arg[&amp;quot;tr&amp;quot;] or translit or test_translit&lt;br /&gt;
	if (translit or test_translit) and not arg[&amp;quot;tr&amp;quot;] then&lt;br /&gt;
		tr = gsub(tr, &amp;quot;%^(%a)&amp;quot;, upper)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if tr then&lt;br /&gt;
		tr = &amp;#039;&amp;lt;span lang=&amp;quot;ko-Latn&amp;quot; class=&amp;quot;mention-tr tr Latn&amp;quot;&amp;gt;&amp;#039; .. &lt;br /&gt;
			tr .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if definition then&lt;br /&gt;
		if not match(definition, &amp;quot;^&amp;#039;&amp;#039;.+&amp;#039;&amp;#039;$&amp;quot;) then definition = &amp;quot;“&amp;quot; .. definition .. &amp;quot;”&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if hanja then&lt;br /&gt;
		hanja = &amp;#039;&amp;lt;span lang=&amp;quot;ko&amp;quot; class=&amp;quot;Kore&amp;quot;&amp;gt;&amp;#039; .. m_link.language_link{lang = lang, term = hanja} .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	word = gsub(word, &amp;quot;%^&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if not match(word, &amp;quot;[%[%]]&amp;quot;) then&lt;br /&gt;
		if match(word, &amp;quot;^—.+—$&amp;quot;) then&lt;br /&gt;
			word = gsub(word, &amp;quot;—(.+)—&amp;quot;, &amp;quot;[[-%1-|—%1—]]&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
		elseif match(word, &amp;quot;^—.+$&amp;quot;) then&lt;br /&gt;
			word = gsub(word, &amp;quot;—(.+)&amp;quot;, &amp;quot;[[-%1|—%1]]&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
		elseif match(word, &amp;quot;^.+—$&amp;quot;) then&lt;br /&gt;
			word = gsub(word, &amp;quot;(.+)—&amp;quot;, &amp;quot;[[%1다|%1—]]&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		elseif match(word, &amp;quot;^%*&amp;quot;) then&lt;br /&gt;
			word = gsub(word, &amp;quot;%*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		else&lt;br /&gt;
			word = &amp;quot;[[&amp;quot; .. word .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local info = {}&lt;br /&gt;
	insert(info, word and (hanja or nil) or nil)&lt;br /&gt;
	insert(info, tr or nil)&lt;br /&gt;
	insert(info, definition or nil)&lt;br /&gt;
&lt;br /&gt;
	local result = word&lt;br /&gt;
		and&lt;br /&gt;
			(&amp;quot;&amp;lt;span lang=\&amp;quot;ko\&amp;quot; class=\&amp;quot;Kore\&amp;quot;&amp;gt;&amp;quot; .. word .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		or&lt;br /&gt;
			(&amp;#039;&amp;lt;span lang=&amp;quot;ko&amp;quot; class=&amp;quot;Kore&amp;quot;&amp;gt;&amp;#039; .. m_link.language_link{lang = lang, term = hanja} .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	if #info &amp;gt; 0 then&lt;br /&gt;
		result = result .. &amp;quot; (&amp;quot; .. concat(info, &amp;quot;, &amp;quot;) .. &amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if note then&lt;br /&gt;
		result = result .. &amp;quot; (&amp;lt;i&amp;gt;&amp;quot; .. note .. &amp;quot;&amp;lt;/i&amp;gt;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.link_t(frame)&lt;br /&gt;
	return export.link(frame:getParent().args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.new(frame)&lt;br /&gt;
	local title = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local poses = { args[1] or &amp;quot;&amp;quot;, args[3] or (args[4] and &amp;quot;&amp;quot; or false), args[5] or (args[6] and &amp;quot;&amp;quot; or false) }&lt;br /&gt;
	local defs = { (args[2] ~= &amp;quot;&amp;quot; and args[2]), (args[4] ~= &amp;quot;&amp;quot; and args[4]), (args[6] ~= &amp;quot;&amp;quot; and args[6]) }&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 image = args[&amp;quot;pic&amp;quot;] or false&lt;br /&gt;
	local caption = args[&amp;quot;capt&amp;quot;] or false&lt;br /&gt;
	local pedia = args[&amp;quot;wp&amp;quot;] or false&lt;br /&gt;
	local irreg = args[&amp;quot;irreg&amp;quot;] or false&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;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;,&lt;br /&gt;
			[&amp;quot;det&amp;quot;] = &amp;quot;Determiner&amp;quot;, [&amp;quot;deter&amp;quot;] = &amp;quot;Determiner&amp;quot;, [&amp;quot;root&amp;quot;] = &amp;quot;Root&amp;quot;,&lt;br /&gt;
		};&lt;br /&gt;
		return pos_title[text] or 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;a&amp;quot;] = &amp;quot;adj&amp;quot;, [&amp;quot;adv&amp;quot;] = &amp;quot;adv&amp;quot;,&lt;br /&gt;
			[&amp;quot;postp&amp;quot;] = &amp;quot;pos|post&amp;quot;, [&amp;quot;conj&amp;quot;] = &amp;quot;pos|con&amp;quot;, [&amp;quot;part&amp;quot;] = &amp;quot;pos|particle&amp;quot;, [&amp;quot;pron&amp;quot;] = &amp;quot;pos|pronoun&amp;quot;,&lt;br /&gt;
			[&amp;quot;prov&amp;quot;] = &amp;quot;proverb&amp;quot;, [&amp;quot;id&amp;quot;] = &amp;quot;pos|idiom&amp;quot;, [&amp;quot;ph&amp;quot;] = &amp;quot;pos|phrase&amp;quot;, [&amp;quot;intj&amp;quot;] = &amp;quot;interj&amp;quot;,&lt;br /&gt;
			[&amp;quot;abb&amp;quot;] = &amp;quot;pos|abbr&amp;quot;, [&amp;quot;cl&amp;quot;] = &amp;quot;pos|cls&amp;quot;, [&amp;quot;det&amp;quot;] = &amp;quot;det&amp;quot;, [&amp;quot;deter&amp;quot;] = &amp;quot;det&amp;quot;, [&amp;quot;root&amp;quot;] = &amp;quot;root&amp;quot;, [&amp;quot;num&amp;quot;] = &amp;quot;num&amp;quot;,&lt;br /&gt;
		};&lt;br /&gt;
		return pos_head[text] or &amp;quot;pos|&amp;quot; .. text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function other(class, title, args, level)&lt;br /&gt;
		local code = &amp;quot;&amp;quot;&lt;br /&gt;
		if args[class] then&lt;br /&gt;
			code = code .. &amp;quot;\n\n&amp;quot; .. level .. title .. level .. &amp;quot;\n* {{l|ko|&amp;quot; .. gsub(args[class], &amp;quot;:&amp;quot;, &amp;quot;|&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			i = 2&lt;br /&gt;
			while args[class .. i] do&lt;br /&gt;
				code = code .. &amp;quot;\n* {{l|ko|&amp;quot; .. gsub(args[class .. i], &amp;quot;:&amp;quot;, &amp;quot;|&amp;quot;) .. &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;
	if args[&amp;quot;2e&amp;quot;] or args[&amp;quot;2h&amp;quot;] or args[&amp;quot;2nat&amp;quot;] or args[&amp;quot;2ee&amp;quot;] or args[&amp;quot;2c1&amp;quot;] or args[&amp;quot;2p&amp;quot;] or args[&amp;quot;multiEtym&amp;quot;] then&lt;br /&gt;
		multiEtym = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function iterate_param(args, genPos, etymNo)&lt;br /&gt;
		if genPos == &amp;quot;proper noun&amp;quot; then args[(etymNo &amp;gt; 1 and etymNo or &amp;quot;&amp;quot;) .. &amp;quot;cap&amp;quot;] = &amp;quot;y&amp;quot; end&lt;br /&gt;
		text = &amp;quot;&amp;quot;&lt;br /&gt;
		for _, arg in ipairs( { &amp;quot;l&amp;quot;, &amp;quot;com&amp;quot;, &amp;quot;nn&amp;quot;, &amp;quot;ui&amp;quot;, &amp;quot;nobc&amp;quot;, &amp;quot;cap&amp;quot;, &amp;quot;ni&amp;quot;, &amp;quot;bcred&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;uie&amp;quot; } ) do&lt;br /&gt;
			if etymNo &amp;gt; 1 then arg_temp = etymNo .. arg else arg_temp = arg end&lt;br /&gt;
			if args[arg_temp] then text = text .. &amp;quot;|&amp;quot; .. arg .. &amp;quot;=&amp;quot; .. args[arg_temp] end&lt;br /&gt;
		end&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function add_etym(args, etymNo)&lt;br /&gt;
		etymText = &amp;quot;&amp;quot;&lt;br /&gt;
		n = etymNo &amp;gt; 1 and etymNo or &amp;quot;&amp;quot;&lt;br /&gt;
		if args[n..&amp;quot;e&amp;quot;] then etymText = etymText .. args[n..&amp;quot;e&amp;quot;]&lt;br /&gt;
		elseif args[n..&amp;quot;h&amp;quot;] then etymText = etymText .. &amp;quot;{{ko-etym-sino|&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. (args[n..&amp;quot;he&amp;quot;] and &amp;quot;|&amp;quot; .. args[n..&amp;quot;he&amp;quot;] or &amp;quot;&amp;quot;) .. &amp;quot;}}.&amp;quot;&lt;br /&gt;
		elseif args[n..&amp;quot;nat&amp;quot;] then etymText = etymText .. &amp;quot;{{ko-etym-native|&amp;quot; .. gsub(args[n..&amp;quot;nat&amp;quot;], &amp;quot;,&amp;quot;, &amp;quot;|&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
		elseif args[n..&amp;quot;ee&amp;quot;] then etymText = etymText .. &amp;quot;From {{bor|ko|&amp;quot; .. (args[n..&amp;quot;el&amp;quot;] or &amp;quot;en&amp;quot;) .. &amp;quot;|&amp;quot; .. args[n..&amp;quot;ee&amp;quot;] .. &amp;quot;}}.&amp;quot;&lt;br /&gt;
		elseif args[n..&amp;quot;c1&amp;quot;] then etymText = etymText .. &lt;br /&gt;
			&amp;quot;{{compound|ko|&amp;quot; .. args[n..&amp;quot;c1&amp;quot;] .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. (args[n..&amp;quot;t1&amp;quot;] and &amp;quot;|t1=&amp;quot; .. args[n..&amp;quot;t1&amp;quot;] or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			&amp;quot;|&amp;quot; .. args[n..&amp;quot;c2&amp;quot;] .. (args[n..&amp;quot;hj2&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj2&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. (args[n..&amp;quot;t2&amp;quot;] and &amp;quot;|t2=&amp;quot; .. args[n..&amp;quot;t2&amp;quot;] or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			(args[n..&amp;quot;c3&amp;quot;] and &amp;quot;|&amp;quot; .. args[n..&amp;quot;c3&amp;quot;] .. (args[n..&amp;quot;hj3&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj3&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. (args[n..&amp;quot;t3&amp;quot;] and &amp;quot;|t3=&amp;quot; .. args[n..&amp;quot;t3&amp;quot;] or &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
			(args[n..&amp;quot;c4&amp;quot;] and &amp;quot;|&amp;quot; .. args[n..&amp;quot;c4&amp;quot;] .. (args[n..&amp;quot;hj4&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj4&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. (args[n..&amp;quot;t4&amp;quot;] and &amp;quot;|t4=&amp;quot; .. args[n..&amp;quot;t4&amp;quot;] or &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;) .. &amp;quot;}}.&amp;quot;&lt;br /&gt;
		elseif match(title, &amp;quot;[하되롭]다$&amp;quot;) then&lt;br /&gt;
			local suffix_data = {&lt;br /&gt;
				[&amp;#039;하다&amp;#039;] = &amp;quot;|t2=to do|pos2=[[light verb]] deriving &amp;quot; .. (genHead(poses[1]) == &amp;quot;adj&amp;quot; and &amp;quot;adjectives&amp;quot; or &amp;quot;active verbs&amp;quot;),&lt;br /&gt;
				[&amp;#039;되다&amp;#039;] = &amp;quot;|t2=to become|pos2=[[light verb]] deriving &amp;quot; .. (genHead(poses[1]) == &amp;quot;adj&amp;quot; and &amp;quot;adjectives&amp;quot; or &amp;quot;passive verbs&amp;quot;),&lt;br /&gt;
				[&amp;#039;롭다&amp;#039;] = &amp;quot;|pos2=suffix deriving adjectives&amp;quot;,&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			etymText = etymText&lt;br /&gt;
				.. &amp;quot;{{af|ko&amp;quot;&lt;br /&gt;
				.. &amp;quot;|&amp;quot; .. sub(title, 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. &amp;quot;|-&amp;quot; .. sub(title, -2, -1)&lt;br /&gt;
				.. (args[&amp;quot;c1r&amp;quot;] and &amp;quot;|pos1=root&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. (args[&amp;quot;t1&amp;quot;] and &amp;quot;|t1=&amp;quot; .. args[&amp;quot;t1&amp;quot;] or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. suffix_data[sub(title, -2, -1)]&lt;br /&gt;
				.. &amp;quot;}}&amp;quot;&lt;br /&gt;
				.. &amp;quot;.&amp;quot;&lt;br /&gt;
		elseif match(title, &amp;quot;시키다$&amp;quot;) or match(title, &amp;quot;스럽다$&amp;quot;) then&lt;br /&gt;
			etymText = etymText&lt;br /&gt;
				.. &amp;quot;{{af|ko&amp;quot;&lt;br /&gt;
				.. &amp;quot;|&amp;quot; .. sub(title, 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. &amp;quot;|-&amp;quot; ..  sub(title, -3, -1)&lt;br /&gt;
				.. (args[&amp;quot;c1r&amp;quot;] and &amp;quot;|pos1=root&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. (args[&amp;quot;t1&amp;quot;] and &amp;quot;|t1=&amp;quot; .. args[&amp;quot;t1&amp;quot;] or &amp;quot;&amp;quot;)&lt;br /&gt;
				.. &amp;quot;}}&amp;quot;&lt;br /&gt;
				.. &amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return etymText&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function add_regional(text, etymNo)&lt;br /&gt;
		local regionalText = &amp;quot;&amp;quot;	&lt;br /&gt;
		local n = etymNo &amp;gt; 1 and etymNo or &amp;quot;&amp;quot;&lt;br /&gt;
		if args[n .. &amp;quot;nk&amp;quot;] then&lt;br /&gt;
			if match(title, &amp;quot;[하되롭]다$&amp;quot;) then&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(title, 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(title, -2, -1)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;nk&amp;quot;], 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;nk&amp;quot;], -2, -1)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			elseif match(title, &amp;quot;시키다$&amp;quot;) or match(title, &amp;quot;스럽다$&amp;quot;) then&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(title, 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(title, -3, -1)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;nk&amp;quot;], 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;nk&amp;quot;], -3, -1)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. (args[n .. &amp;quot;cap&amp;quot;] and &amp;quot;^&amp;quot; or &amp;quot;&amp;quot;) .. title .. (args[n..&amp;quot;h&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. (args[n .. &amp;quot;cap&amp;quot;] and &amp;quot;^&amp;quot; or &amp;quot;&amp;quot;) .. args[n .. &amp;quot;nk&amp;quot;] .. (args[n..&amp;quot;h&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		elseif args[n .. &amp;quot;sk&amp;quot;] then&lt;br /&gt;
			if match(title, &amp;quot;[하되롭]다$&amp;quot;) then&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;sk&amp;quot;], 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;sk&amp;quot;], -2, -1)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(title, 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(title, -2, -1)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			elseif match(title, &amp;quot;시키다$&amp;quot;) or match(title, &amp;quot;스럽다$&amp;quot;) then&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;sk&amp;quot;], 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;sk&amp;quot;], -3, -1)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. sub(title, 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(title, -3, -1)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				regionalText = regionalText .. &amp;quot;\n{{ko-regional&amp;quot;&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. (args[n .. &amp;quot;cap&amp;quot;] and &amp;quot;^&amp;quot; or &amp;quot;&amp;quot;) .. args[n .. &amp;quot;sk&amp;quot;] .. (args[n..&amp;quot;h&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
					.. &amp;quot;|&amp;quot; .. (args[n .. &amp;quot;cap&amp;quot;] and &amp;quot;^&amp;quot; or &amp;quot;&amp;quot;) .. title .. (args[n..&amp;quot;h&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
					..&amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return regionalText&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- generate {{standard form of}} if definition is not given&lt;br /&gt;
	-- XXX: |ncap= which is set automatically by add_etym() doesn&amp;#039;t happen yet here&lt;br /&gt;
	-- WISHLIST: choose between {{standard spelling of}} and {{standard form of}}?&lt;br /&gt;
	-- no difference in categorization though. really not worth it&lt;br /&gt;
	for _, etymNo in ipairs({1, 2, 3}) do&lt;br /&gt;
		local n = etymNo &amp;gt; 1 and etymNo or &amp;quot;&amp;quot;&lt;br /&gt;
		if args[n..&amp;quot;sk&amp;quot;] then&lt;br /&gt;
			if not defs[etymNo] then&lt;br /&gt;
				if match(title, &amp;quot;[하되롭]다$&amp;quot;) then&lt;br /&gt;
					defs[etymNo] = &amp;quot;{{standard form of|ko&amp;quot;&lt;br /&gt;
						.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;sk&amp;quot;], 1, -3) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;sk&amp;quot;], -2, -1)&lt;br /&gt;
						..&amp;quot;|from=North Korea}}&amp;quot;&lt;br /&gt;
				elseif match(title, &amp;quot;시키다$&amp;quot;) or match(title, &amp;quot;스럽다$&amp;quot;) then&lt;br /&gt;
					defs[etymNo] = &amp;quot;{{standard form of|ko&amp;quot;&lt;br /&gt;
						.. &amp;quot;|&amp;quot; .. sub(args[n .. &amp;quot;sk&amp;quot;], 1, -4) .. (args[n..&amp;quot;hj1&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;hj1&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. sub(args[n .. &amp;quot;sk&amp;quot;], -3, -1)&lt;br /&gt;
						..&amp;quot;|from=North Korea}}&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					defs[etymNo] = &amp;quot;{{standard form of|ko&amp;quot;&lt;br /&gt;
						.. &amp;quot;|&amp;quot; .. (args[n .. &amp;quot;cap&amp;quot;] and &amp;quot;^&amp;quot; or &amp;quot;&amp;quot;) .. args[n .. &amp;quot;sk&amp;quot;] .. (args[n..&amp;quot;h&amp;quot;] and &amp;quot;(&amp;quot; .. args[n..&amp;quot;h&amp;quot;] .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
						..&amp;quot;|from=North Korea}}&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = result .. &amp;quot;==Korean==&amp;quot;&lt;br /&gt;
	if pedia then result = result .. &amp;quot;\n{{wp|ko:&amp;quot; .. (pedia ~= &amp;quot;y&amp;quot; and pedia or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
	if image then result = result .. &amp;quot;\n[[File:&amp;quot; .. image .. &amp;quot;|thumb|right|250px|&amp;quot; .. (caption or title) .. &amp;quot;.]]&amp;quot; end&lt;br /&gt;
	result = result .. other(&amp;quot;alt&amp;quot;, &amp;quot;Alternative forms&amp;quot;, args, &amp;quot;===&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if match(title, &amp;quot;[하되롭]다$&amp;quot;) or match(title, &amp;quot;시키다$&amp;quot;) or match(title, &amp;quot;스럽다$&amp;quot;) then autoEtym = true end&lt;br /&gt;
	if args[&amp;quot;e&amp;quot;] or args[&amp;quot;2e&amp;quot;] or args[&amp;quot;3e&amp;quot;] or args[&amp;quot;h&amp;quot;] or args[&amp;quot;nat&amp;quot;] or args[&amp;quot;ee&amp;quot;] or args[&amp;quot;c1&amp;quot;] or autoEtym or multiEtym then&lt;br /&gt;
		etym = &amp;quot;\n\n===Etymology&amp;quot; .. (multiEtym and &amp;quot; 1&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;===\n&amp;quot;&lt;br /&gt;
		etym = etym .. add_etym(args, 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if etym then result = result .. etym end&lt;br /&gt;
	level = multiEtym and &amp;quot;====&amp;quot; or &amp;quot;===&amp;quot;&lt;br /&gt;
	result = result .. other(&amp;quot;1alt&amp;quot;, &amp;quot;Alternative forms&amp;quot;, args, &amp;quot;====&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	result = result .. &amp;quot;\n\n&amp;quot; .. level .. &amp;quot;Pronunciation&amp;quot; .. level ..&lt;br /&gt;
	&amp;quot;\n{{ko-IPA&amp;quot; .. iterate_param(args, genHead(poses[1]), 1) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	if genHead(poses[1]) == &amp;quot;root&amp;quot; then defs[1] = &amp;quot;{{ko-root of|&amp;quot; .. defs[1] .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
	result = result .. &amp;quot;\n\n&amp;quot; .. level .. genTitle(poses[1]) .. level .. &amp;quot;\n{{ko-&amp;quot; .. genHead(poses[1]) ..&lt;br /&gt;
	(head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. (args[&amp;quot;h&amp;quot;] and (&amp;quot;|hanja=&amp;quot; .. args[&amp;quot;h&amp;quot;]) or &amp;quot;&amp;quot;) ..&lt;br /&gt;
	(irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot; .. add_regional(args, 1) .. &amp;quot;\n\n# &amp;quot; .. (defs[1] or &amp;quot;{{rfdef|ko}}&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local function add_der(args, etymNo, hanja)&lt;br /&gt;
		n = etymNo &amp;gt; 1 and etymNo or &amp;quot;&amp;quot;&lt;br /&gt;
		local translDer = { [&amp;quot;h&amp;quot;] = &amp;quot;하다&amp;quot;, [&amp;quot;d&amp;quot;] = &amp;quot;되다&amp;quot;, [&amp;quot;s&amp;quot;] = &amp;quot;시키다&amp;quot; }&lt;br /&gt;
		if args[n .. &amp;quot;der&amp;quot;] and gsub(args[n .. &amp;quot;der&amp;quot;], &amp;quot;[sdh]&amp;quot;, &amp;quot;&amp;quot;) == &amp;quot;&amp;quot; then&lt;br /&gt;
			i = 1&lt;br /&gt;
			for ch in gsplit(args[n .. &amp;quot;der&amp;quot;], &amp;quot;&amp;quot;) do&lt;br /&gt;
				args[n .. &amp;quot;der&amp;quot; .. (i == 1 and &amp;quot;&amp;quot; or i)] = title .. (hanja and &amp;quot;(&amp;quot; .. hanja .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;) .. translDer[ch]&lt;br /&gt;
				i = i + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args = add_der(args, 1, args[&amp;quot;h&amp;quot;] or false)&lt;br /&gt;
	result = result .. other(&amp;quot;syn&amp;quot;, &amp;quot;=Synonyms=&amp;quot;, args, level)&lt;br /&gt;
	result = result .. other(&amp;quot;ant&amp;quot;, &amp;quot;=Antonyms=&amp;quot;, args, level)&lt;br /&gt;
	result = result .. other(&amp;quot;der&amp;quot;, &amp;quot;=Derived terms=&amp;quot;, args, level)&lt;br /&gt;
	result = result .. other(&amp;quot;rel&amp;quot;, &amp;quot;=Related terms=&amp;quot;, args, level)&lt;br /&gt;
	result = result .. other(&amp;quot;also&amp;quot;, &amp;quot;=See also=&amp;quot;, args, level)&lt;br /&gt;
	if genHead(poses[1]) == &amp;quot;adj&amp;quot; or genHead(poses[1]) == &amp;quot;verb&amp;quot; then&lt;br /&gt;
		result = result .. &amp;quot;\n\n=&amp;quot; .. level .. &amp;quot;Conjugation&amp;quot; .. level .. &amp;quot;=\n{{ko-conj/&amp;quot; .. genHead(poses[1]) .. (irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if poses[2] then&lt;br /&gt;
		if multiEtym then&lt;br /&gt;
			result = result .. &amp;quot;\n\n===Etymology 2===\n&amp;quot; .. add_etym(args, 2)&lt;br /&gt;
			level = &amp;quot;====&amp;quot;&lt;br /&gt;
			result = result .. other(&amp;quot;2alt&amp;quot;, &amp;quot;Alternative forms&amp;quot;, args, level)&lt;br /&gt;
			&lt;br /&gt;
			result = result .. &amp;quot;\n\n&amp;quot; .. level .. &amp;quot;Pronunciation&amp;quot; .. level .. &lt;br /&gt;
			&amp;quot;\n{{ko-IPA&amp;quot; .. iterate_param(args, genHead(poses[2]), 2) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			if genHead(poses[2]) == &amp;quot;root&amp;quot; then defs[2] = &amp;quot;{{ko-root of|&amp;quot; .. defs[2] .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
			result = result .. &amp;quot;\n\n&amp;quot; .. level .. genTitle(poses[2]) .. level .. &amp;quot;\n{{ko-&amp;quot; .. genHead(poses[2]) ..&lt;br /&gt;
			(head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. (args[&amp;quot;2h&amp;quot;] and (&amp;quot;|hanja=&amp;quot; .. args[&amp;quot;2h&amp;quot;]) or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot; .. add_regional(args, 2) .. &amp;quot;\n\n# &amp;quot; .. (defs[2] or &amp;quot;{{rfdef|ko}}&amp;quot;)&lt;br /&gt;
			args = add_der(args, 2, args[&amp;quot;2h&amp;quot;] or false)&lt;br /&gt;
			result = result .. other(&amp;quot;2syn&amp;quot;, &amp;quot;=Synonyms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;2ant&amp;quot;, &amp;quot;=Antonyms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;2der&amp;quot;, &amp;quot;=Derived terms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;2rel&amp;quot;, &amp;quot;=Related terms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;2also&amp;quot;, &amp;quot;=See also=&amp;quot;, args, level)&lt;br /&gt;
			if genHead(poses[2]) == &amp;quot;adj&amp;quot; or genHead(poses[2]) == &amp;quot;verb&amp;quot; then&lt;br /&gt;
				result = result .. &amp;quot;\n\n=&amp;quot; .. level .. &amp;quot;Conjugation&amp;quot; .. level .. &amp;quot;=\n{{ko-conj/&amp;quot; .. genHead(poses[2]) .. (irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else&lt;br /&gt;
			result = result .. &amp;quot;\n\n===&amp;quot; .. genTitle(poses[2]) .. &amp;quot;===\n{{ko-&amp;quot; .. genHead(poses[2]) ..&lt;br /&gt;
			(head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. (args[&amp;quot;2h&amp;quot;] and (&amp;quot;|hanja=&amp;quot; .. args[&amp;quot;2h&amp;quot;]) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
			&amp;quot;}}\n\n# &amp;quot; .. (defs[2] or &amp;quot;{{rfdef|ko}}&amp;quot;)&lt;br /&gt;
			if genHead(poses[2]) == &amp;quot;adj&amp;quot; or genHead(poses[2]) == &amp;quot;verb&amp;quot; then&lt;br /&gt;
				result = result .. &amp;quot;\n\n====Conjugation====\n{{ko-conj/&amp;quot; .. genHead(poses[2]) .. (irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if poses[3] then&lt;br /&gt;
		if multiEtym then&lt;br /&gt;
			result = result .. &amp;quot;\n\n===Etymology 3===\n&amp;quot; .. add_etym(args, 3)&lt;br /&gt;
			level = &amp;quot;====&amp;quot;&lt;br /&gt;
			result = result .. other(&amp;quot;3alt&amp;quot;, &amp;quot;Alternative forms&amp;quot;, args, level)&lt;br /&gt;
			&lt;br /&gt;
			result = result .. &amp;quot;\n\n&amp;quot; .. level .. &amp;quot;Pronunciation&amp;quot; .. level .. &lt;br /&gt;
			&amp;quot;\n{{ko-IPA&amp;quot; .. iterate_param(args, genHead(poses[3]), 3) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			if genHead(poses[3]) == &amp;quot;root&amp;quot; then defs[3] = &amp;quot;{{ko-root of|&amp;quot; .. defs[3] .. &amp;quot;}}&amp;quot; end&lt;br /&gt;
			result = result .. &amp;quot;\n\n&amp;quot; .. level .. genTitle(poses[3]) .. level .. &amp;quot;\n{{ko-&amp;quot; .. genHead(poses[3]) ..&lt;br /&gt;
			(head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. (args[&amp;quot;3h&amp;quot;] and (&amp;quot;|hanja=&amp;quot; .. args[&amp;quot;3h&amp;quot;]) or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot; .. add_regional(args, 3) .. &amp;quot;\n\n# &amp;quot; .. (defs[3] or &amp;quot;{{rfdef|ko}}&amp;quot;)&lt;br /&gt;
			args = add_der(args, 3, args[&amp;quot;3h&amp;quot;] or false)&lt;br /&gt;
			result = result .. other(&amp;quot;3syn&amp;quot;, &amp;quot;=Synonyms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;3ant&amp;quot;, &amp;quot;=Antonyms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;3der&amp;quot;, &amp;quot;=Derived terms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;3rel&amp;quot;, &amp;quot;=Related terms=&amp;quot;, args, level)&lt;br /&gt;
			result = result .. other(&amp;quot;3also&amp;quot;, &amp;quot;=See also=&amp;quot;, args, level)&lt;br /&gt;
			if genHead(poses[3]) == &amp;quot;adj&amp;quot; or genHead(poses[3]) == &amp;quot;verb&amp;quot; then&lt;br /&gt;
				result = result .. &amp;quot;\n\n=&amp;quot; .. level .. &amp;quot;Conjugation&amp;quot; .. level .. &amp;quot;=\n{{ko-conj/&amp;quot; .. genHead(poses[3]) .. (irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			result = result .. &amp;quot;\n\n===&amp;quot; .. genTitle(poses[3]) .. &amp;quot;===\n{{ko-&amp;quot; .. genHead(poses[3]) ..&lt;br /&gt;
			(head and (&amp;quot;|head=&amp;quot; .. head) or &amp;quot;&amp;quot;) .. (args[&amp;quot;3h&amp;quot;] and (&amp;quot;|hanja=&amp;quot; .. args[&amp;quot;3h&amp;quot;]) or &amp;quot;&amp;quot;) .. &lt;br /&gt;
			&amp;quot;}}\n\n# &amp;quot; .. (defs[3] or &amp;quot;{{rfdef|ko}}&amp;quot;)&lt;br /&gt;
			if genHead(poses[3]) == &amp;quot;adj&amp;quot; or genHead(poses[3]) == &amp;quot;verb&amp;quot; then&lt;br /&gt;
				result = result .. &amp;quot;\n\n====Conjugation====\n{{ko-conj/&amp;quot; .. genHead(poses[3]) .. (irreg and &amp;quot;|irreg=y&amp;quot; or &amp;quot;&amp;quot;) .. &amp;quot;}}&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if cat then&lt;br /&gt;
		result = result .. &amp;quot;\n\n{{C|ko|&amp;quot; .. cat .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.decompose_jamo(syllable)&lt;br /&gt;
	if not match(syllable, &amp;quot;[가-힣]&amp;quot;) then&lt;br /&gt;
		if match(syllable, &amp;quot;[ᄀ-ᄒ]&amp;quot;) then return { initial = syllable, vowel = &amp;quot;Ø&amp;quot;, final = &amp;quot;Ø&amp;quot; }&lt;br /&gt;
		elseif match(syllable, &amp;quot;[ᅡ-ᅵ]&amp;quot;) then return { initial = &amp;quot;Ø&amp;quot;, vowel = syllable, final = &amp;quot;Ø&amp;quot; }&lt;br /&gt;
		elseif match(syllable, &amp;quot;[ᆨ-ᇂ]&amp;quot;) then return { initial = &amp;quot;Ø&amp;quot;, vowel = &amp;quot;Ø&amp;quot;, final = syllable }&lt;br /&gt;
		elseif match(syllable, &amp;quot;[ㄱ-ㅎ]&amp;quot;) then return { initial = &amp;quot;Ø&amp;quot;, vowel = &amp;quot;Ø&amp;quot;, final = syllable }&lt;br /&gt;
		elseif match(syllable, &amp;quot;[ㅏ-ㅣ]&amp;quot;) then return { initial = &amp;quot;Ø&amp;quot;, vowel = syllable, final = &amp;quot;Ø&amp;quot; }&lt;br /&gt;
		else return { initial = &amp;quot;Ø&amp;quot;, vowel = &amp;quot; &amp;quot;, final = &amp;quot;X&amp;quot; } end&lt;br /&gt;
	end&lt;br /&gt;
	local cp = codepoint(syllable)&lt;br /&gt;
	if not cp then return { &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot; } end&lt;br /&gt;
	local relative_cp = cp - 0xAC00&lt;br /&gt;
	local jongseong = relative_cp % 28&lt;br /&gt;
	local jungseong = floor((relative_cp % 588) / 28)&lt;br /&gt;
	local choseong = floor(relative_cp / 588)&lt;br /&gt;
	choseong, jungseong, jongseong = &lt;br /&gt;
		u(0x1100 + choseong), &lt;br /&gt;
		u(0x1161 + jungseong), &lt;br /&gt;
		jongseong ~= 0 and u(0x11A7 + jongseong) or &amp;quot;&amp;quot;&lt;br /&gt;
	return { initial = choseong, vowel = jungseong, final = jongseong }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>