<?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%3Agrc-translit</id>
	<title>Module:grc-translit - 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%3Agrc-translit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:grc-translit&amp;action=history"/>
	<updated>2026-04-03T16:55:32Z</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:grc-translit&amp;diff=240223&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local m_data = require(&#039;Module:grc-utilities/data&#039;) local tokenize = require(&#039;Module:grc-utilities&#039;).tokenize  local ufind = mw.ustring.find local ugsub = m...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:grc-translit&amp;diff=240223&amp;oldid=prev"/>
		<updated>2021-10-15T19:37:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local m_data = require(&amp;#039;Module:grc-utilities/data&amp;#039;) local tokenize = require(&amp;#039;Module:grc-utilities&amp;#039;).tokenize  local ufind = mw.ustring.find local ugsub = m...&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_data = require(&amp;#039;Module:grc-utilities/data&amp;#039;)&lt;br /&gt;
local tokenize = require(&amp;#039;Module:grc-utilities&amp;#039;).tokenize&lt;br /&gt;
&lt;br /&gt;
local ufind = mw.ustring.find&lt;br /&gt;
local ugsub = mw.ustring.gsub&lt;br /&gt;
local U = mw.ustring.char&lt;br /&gt;
local ulower = mw.ustring.lower&lt;br /&gt;
local uupper = mw.ustring.upper&lt;br /&gt;
&lt;br /&gt;
local UTF8char = &amp;#039;[%z\1-\127\194-\244][\128-\191]*&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- Diacritics&lt;br /&gt;
local diacritics = m_data.named&lt;br /&gt;
&lt;br /&gt;
-- Greek&lt;br /&gt;
local acute = diacritics.acute&lt;br /&gt;
local grave = diacritics.grave&lt;br /&gt;
local circumflex = diacritics.circum&lt;br /&gt;
local diaeresis = diacritics.diaeresis&lt;br /&gt;
local smooth = diacritics.smooth&lt;br /&gt;
local rough = diacritics.rough&lt;br /&gt;
local macron = diacritics.macron&lt;br /&gt;
local breve = diacritics.breve&lt;br /&gt;
local subscript = diacritics.subscript&lt;br /&gt;
&lt;br /&gt;
-- Latin&lt;br /&gt;
local hat = diacritics.Latin_circum&lt;br /&gt;
&lt;br /&gt;
local macron_diaeresis = macron .. diaeresis .. &amp;quot;?&amp;quot; .. hat&lt;br /&gt;
local a_subscript = &amp;#039;^[αΑ].*&amp;#039; .. subscript .. &amp;#039;$&amp;#039;&lt;br /&gt;
local velar = &amp;#039;κγχξ&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local tt = {&lt;br /&gt;
	-- Vowels&lt;br /&gt;
	[&amp;quot;α&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
	[&amp;quot;ε&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
	[&amp;quot;η&amp;quot;] = &amp;quot;e&amp;quot; .. macron,&lt;br /&gt;
	[&amp;quot;ι&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
	[&amp;quot;ο&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
	[&amp;quot;υ&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
	[&amp;quot;ω&amp;quot;] = &amp;quot;o&amp;quot; .. macron,&lt;br /&gt;
&lt;br /&gt;
	-- Consonants&lt;br /&gt;
	[&amp;quot;β&amp;quot;] = &amp;quot;b&amp;quot;,&lt;br /&gt;
	[&amp;quot;γ&amp;quot;] = &amp;quot;g&amp;quot;,&lt;br /&gt;
	[&amp;quot;δ&amp;quot;] = &amp;quot;d&amp;quot;,&lt;br /&gt;
	[&amp;quot;ζ&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;θ&amp;quot;] = &amp;quot;th&amp;quot;,&lt;br /&gt;
	[&amp;quot;κ&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;λ&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
	[&amp;quot;μ&amp;quot;] = &amp;quot;m&amp;quot;,&lt;br /&gt;
	[&amp;quot;ν&amp;quot;] = &amp;quot;n&amp;quot;,&lt;br /&gt;
	[&amp;quot;ξ&amp;quot;] = &amp;quot;x&amp;quot;,&lt;br /&gt;
	[&amp;quot;π&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
	[&amp;quot;ρ&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
	[&amp;quot;σ&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ς&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;τ&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;φ&amp;quot;] = &amp;quot;ph&amp;quot;,&lt;br /&gt;
	[&amp;quot;χ&amp;quot;] = &amp;quot;kh&amp;quot;,&lt;br /&gt;
	[&amp;quot;ψ&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	-- Archaic letters&lt;br /&gt;
	[&amp;quot;ϝ&amp;quot;] = &amp;quot;w&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϻ&amp;quot;] = &amp;quot;ś&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϙ&amp;quot;] = &amp;quot;q&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϡ&amp;quot;] = &amp;quot;š&amp;quot;,&lt;br /&gt;
	[&amp;quot;ͷ&amp;quot;] = &amp;quot;v&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	-- Incorrect characters: see [[Wiktionary:About Ancient Greek#Miscellaneous]].&lt;br /&gt;
	-- These are tracked by [[Module:script utilities]].&lt;br /&gt;
	[&amp;quot;ϐ&amp;quot;] = &amp;quot;b&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϑ&amp;quot;] = &amp;quot;th&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϰ&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϱ&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϲ&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ϕ&amp;quot;] = &amp;quot;ph&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	-- Diacritics&lt;br /&gt;
	-- unchanged: macron, diaeresis, grave, acute&lt;br /&gt;
	[breve] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[smooth] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[rough] = &amp;#039;&amp;#039;,&lt;br /&gt;
	[circumflex] = hat,&lt;br /&gt;
	[subscript] = &amp;#039;i&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.tr(text, lang, sc)&lt;br /&gt;
	if text == &amp;#039;῾&amp;#039; then&lt;br /&gt;
		return &amp;#039;h&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
		Replace semicolon or Greek question mark with regular question mark,&lt;br /&gt;
		except after an ASCII alphanumeric character (to avoid converting&lt;br /&gt;
		semicolons in HTML entities).&lt;br /&gt;
	]]&lt;br /&gt;
	text = ugsub(text, &amp;quot;([^A-Za-z0-9])[;&amp;quot; .. U(0x37E) .. &amp;quot;]&amp;quot;, &amp;quot;%1?&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Handle the middle dot. It is equivalent to semicolon or colon, but semicolon is probably more common.&lt;br /&gt;
	text = text:gsub(&amp;quot;·&amp;quot;, &amp;quot;;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local tokens = tokenize(text)&lt;br /&gt;
&lt;br /&gt;
	--now read the tokens&lt;br /&gt;
	local output = {}&lt;br /&gt;
	for i, token in pairs(tokens) do&lt;br /&gt;
		-- Convert token to lowercase and substitute each character&lt;br /&gt;
		-- for its transliteration&lt;br /&gt;
		local translit = ulower(token):gsub(UTF8char, tt)&lt;br /&gt;
		&lt;br /&gt;
		local next_token = tokens[i + 1]&lt;br /&gt;
		&lt;br /&gt;
		if token == &amp;#039;γ&amp;#039; and next_token and velar:find(next_token, 1, true) then&lt;br /&gt;
			-- γ before a velar should be &amp;lt;n&amp;gt;&lt;br /&gt;
			translit = &amp;#039;n&amp;#039;&lt;br /&gt;
		elseif token == &amp;#039;ρ&amp;#039; and tokens[i - 1] == &amp;#039;ρ&amp;#039; then&lt;br /&gt;
			-- ρ after ρ should be &amp;lt;rh&amp;gt;&lt;br /&gt;
			translit = &amp;#039;rh&amp;#039;&lt;br /&gt;
		elseif ufind(token, a_subscript) then&lt;br /&gt;
			-- add macron to ᾳ&lt;br /&gt;
			translit = ugsub(translit, &amp;#039;([aA])&amp;#039;, &amp;#039;%1&amp;#039; .. macron)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if token:find(rough) then&lt;br /&gt;
			if ufind(token, &amp;#039;^[Ρρ]&amp;#039;) then&lt;br /&gt;
				translit = translit .. &amp;#039;h&amp;#039;&lt;br /&gt;
			else -- vowel&lt;br /&gt;
				translit = &amp;#039;h&amp;#039; .. translit&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Remove macron from a vowel that has a circumflex.&lt;br /&gt;
		if ufind(translit, macron_diaeresis) then&lt;br /&gt;
			translit = translit:gsub(macron, &amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Capitalize first character of transliteration.&lt;br /&gt;
		if token ~= ulower(token) then&lt;br /&gt;
			translit = translit:gsub(&amp;quot;^&amp;quot; .. UTF8char, uupper)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(output, translit)&lt;br /&gt;
	end&lt;br /&gt;
	output = table.concat(output)&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>