<?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%3ACopt-sortkey</id>
	<title>Module:Copt-sortkey - 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%3ACopt-sortkey"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Copt-sortkey&amp;action=history"/>
	<updated>2026-05-13T22:04:23Z</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:Copt-sortkey&amp;diff=495373&amp;oldid=prev</id>
		<title>Sware: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Copt-sortkey&amp;diff=495373&amp;oldid=prev"/>
		<updated>2026-04-21T12:01:01Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:01, 21 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:Copt-sortkey&amp;diff=495372&amp;oldid=prev</id>
		<title>wikt&gt;Theknightwho: Theknightwho moved page Module:cop-sortkey to Module:Copt-sortkey</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Copt-sortkey&amp;diff=495372&amp;oldid=prev"/>
		<updated>2025-03-06T14:13:18Z</updated>

		<summary type="html">&lt;p&gt;Theknightwho moved page &lt;a href=&quot;/w/index.php?title=Module:cop-sortkey&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:cop-sortkey (page does not exist)&quot;&gt;Module:cop-sortkey&lt;/a&gt; to &lt;a href=&quot;/wiki/Module:Copt-sortkey&quot; title=&quot;Module:Copt-sortkey&quot;&gt;Module:Copt-sortkey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;export = {}&lt;br /&gt;
&lt;br /&gt;
local match = mw.ustring.match&lt;br /&gt;
local str_gsub = string.gsub&lt;br /&gt;
&lt;br /&gt;
local function ugsub(text, regex, replacement)&lt;br /&gt;
	local out = mw.ustring.gsub(text, regex, replacement)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local alphabet = &amp;quot;ⲁⲃⲅⲇⲉⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱϣϥⳉϧϩϫϭw&amp;quot;&lt;br /&gt;
local vowels = &amp;quot;ⲁⲉⲏⲓⲟⲩⲱ&amp;quot;&lt;br /&gt;
local vowel = &amp;quot;[&amp;quot; .. vowels .. &amp;quot;]&amp;quot;&lt;br /&gt;
local consonants = ugsub(alphabet, vowel, &amp;quot;&amp;quot;)&lt;br /&gt;
local consonant = &amp;quot;[&amp;quot; .. consonants .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local replacements = {&lt;br /&gt;
	[&amp;quot;ⲟⲩ&amp;quot;] = &amp;quot;ⲩ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⳤ&amp;quot;] = &amp;quot;ⲕⲉ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲉⲓ&amp;quot;] = &amp;quot;ⲓ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϯ&amp;quot;] = &amp;quot;ⲧⲓ&amp;quot;,&lt;br /&gt;
	[&amp;quot;-&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
	[&amp;quot;⸗&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
	[&amp;quot;ˋ&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local CopticToGreek = {&lt;br /&gt;
	[&amp;quot;ⲁ&amp;quot;] = &amp;quot;α&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲃ&amp;quot;] = &amp;quot;β&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲅ&amp;quot;] = &amp;quot;γ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲇ&amp;quot;] = &amp;quot;δ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲉ&amp;quot;] = &amp;quot;ε&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲍ&amp;quot;] = &amp;quot;ζ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲏ&amp;quot;] = &amp;quot;η&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲑ&amp;quot;] = &amp;quot;θ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲓ&amp;quot;] = &amp;quot;ι&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲕ&amp;quot;] = &amp;quot;κ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲗ&amp;quot;] = &amp;quot;λ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲙ&amp;quot;] = &amp;quot;μ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲛ&amp;quot;] = &amp;quot;ν&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲝ&amp;quot;] = &amp;quot;ξ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲟ&amp;quot;] = &amp;quot;ο&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲡ&amp;quot;] = &amp;quot;π&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲣ&amp;quot;] = &amp;quot;ρ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲥ&amp;quot;] = &amp;quot;σ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲧ&amp;quot;] = &amp;quot;τ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲩ&amp;quot;] = &amp;quot;υ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲫ&amp;quot;] = &amp;quot;φ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲭ&amp;quot;] = &amp;quot;χ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲯ&amp;quot;] = &amp;quot;ψ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ⲱ&amp;quot;] = &amp;quot;ω&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.makeSortKey(text, lang, sc)&lt;br /&gt;
	text = mw.ustring.lower(text)&lt;br /&gt;
	&lt;br /&gt;
	for letter, replacement in pairs(replacements) do&lt;br /&gt;
		text = str_gsub(text, letter, replacement)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local origText = text&lt;br /&gt;
	&lt;br /&gt;
	text = ugsub(text, &amp;quot;ⲩ(&amp;quot; .. vowel .. &amp;quot;)&amp;quot;, &amp;quot;w%1&amp;quot;)&lt;br /&gt;
	text = ugsub(text, &amp;quot;(&amp;quot; .. vowel .. &amp;quot;)ⲩ&amp;quot;, &amp;quot;%1w&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
--	mw.log(origText, text)&lt;br /&gt;
	&lt;br /&gt;
	local sort = {}&lt;br /&gt;
	&lt;br /&gt;
	for word in mw.ustring.gmatch(text, &amp;quot;%S+&amp;quot;) do&lt;br /&gt;
		-- Add initial vowel (if any).&lt;br /&gt;
		table.insert(sort, match(word, &amp;quot;^&amp;quot; .. vowel) )&lt;br /&gt;
		-- Add consonants (in order).&lt;br /&gt;
		table.insert(sort, ugsub(word, vowel .. &amp;quot;+&amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
		&lt;br /&gt;
		--[[&lt;br /&gt;
			Add the number &amp;quot;1&amp;quot; if word ends in consonant.&lt;br /&gt;
			&amp;quot;1&amp;quot; sorts before Greek–Coptic and Coptic Unicode blocks.&lt;br /&gt;
		]]&lt;br /&gt;
		if mw.ustring.match(word, consonant .. &amp;quot;$&amp;quot;) then&lt;br /&gt;
			table.insert(sort, &amp;quot;1&amp;quot;)&lt;br /&gt;
		elseif mw.ustring.match(word, vowel .. &amp;quot;$&amp;quot;) then&lt;br /&gt;
			table.insert(sort, &amp;quot;2&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Get non-initial vowels (in order) by removing initial vowel and all consonants.&lt;br /&gt;
		table.insert(sort, ugsub(ugsub(word, &amp;quot;^&amp;quot; .. vowel, &amp;quot;&amp;quot;), consonant, &amp;quot;&amp;quot;))&lt;br /&gt;
		&lt;br /&gt;
		table.insert(sort, &amp;quot; &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	sort = table.concat(sort)&lt;br /&gt;
	&lt;br /&gt;
	sort = str_gsub(sort, &amp;quot;w&amp;quot;, &amp;quot;ⲩ&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
		Convert Greek-derived Coptic characters to Greek ones.&lt;br /&gt;
		Otherwise, the uniquely Coptic letters would sort first, because&lt;br /&gt;
		they were added to Unicode earlier.&lt;br /&gt;
		ϣϥⳉϧϩϫϭ		ⲁⲃⲅⲇⲉⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱ&lt;br /&gt;
						⇓&lt;br /&gt;
		αβγδεζηθικλμνξοπρστυφχψω	ϣϥⳉϧϩϫϭ		&lt;br /&gt;
	]]&lt;br /&gt;
	sort = str_gsub(sort, &amp;quot;[\194-\244][\128-\191]+&amp;quot;, CopticToGreek)&lt;br /&gt;
	&lt;br /&gt;
	return mw.ustring.upper(sort)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode(&amp;quot;cop&amp;quot;)&lt;br /&gt;
local sc = require(&amp;quot;Module:scripts&amp;quot;).getByCode(&amp;quot;Copt&amp;quot;)&lt;br /&gt;
local function tag(text)&lt;br /&gt;
	return require(&amp;quot;Module:script utilities&amp;quot;).tag_text(text, lang, sc)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.showSorting(frame)&lt;br /&gt;
	local terms = {}&lt;br /&gt;
	&lt;br /&gt;
	for i, term in ipairs(frame.args) do&lt;br /&gt;
		table.insert(terms, term)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function comp(term1, term2)&lt;br /&gt;
		return export.makeSortKey(term1) &amp;lt; export.makeSortKey(term2)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(terms, comp)&lt;br /&gt;
	&lt;br /&gt;
	for i, term in pairs(terms) do&lt;br /&gt;
		terms[i] = &amp;quot;\n* &amp;quot; .. tag(term) .. &amp;quot; (&amp;lt;code&amp;gt;&amp;quot; .. export.makeSortKey(term) .. &amp;quot;&amp;lt;/code&amp;gt;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(terms)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>wikt&gt;Theknightwho</name></author>
	</entry>
</feed>