<?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%3APolyt-stripdiacritics</id>
	<title>Module:Polyt-stripdiacritics - 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%3APolyt-stripdiacritics"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Polyt-stripdiacritics&amp;action=history"/>
	<updated>2026-05-23T20:05:00Z</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:Polyt-stripdiacritics&amp;diff=512660&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local u = require(&quot;Module:string/char&quot;) local ugsub = mw.ustring.gsub local umatch = mw.ustring.match  local grave = u(0x300) local acute = u(0x301) local smooth = u(0x313) local rough = u(0x314)  local word_ch = &quot;[%w&quot; .. grave .. acute .. smooth .. rough .. u(0x308, 0x342, 0x345) .. &quot;]&quot; local following_word_pattern = &quot;^&quot; .. word_ch .. &quot;*%s+&quot; .. word_ch -- not punctuation  local breathing_ch...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Polyt-stripdiacritics&amp;diff=512660&amp;oldid=prev"/>
		<updated>2026-05-07T14:25:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local u = require(&amp;quot;Module:string/char&amp;quot;) local ugsub = mw.ustring.gsub local umatch = mw.ustring.match  local grave = u(0x300) local acute = u(0x301) local smooth = u(0x313) local rough = u(0x314)  local word_ch = &amp;quot;[%w&amp;quot; .. grave .. acute .. smooth .. rough .. u(0x308, 0x342, 0x345) .. &amp;quot;]&amp;quot; local following_word_pattern = &amp;quot;^&amp;quot; .. word_ch .. &amp;quot;*%s+&amp;quot; .. word_ch -- not punctuation  local breathing_ch...&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 toNFC = mw.ustring.toNFC&lt;br /&gt;
local toNFD = mw.ustring.toNFD&lt;br /&gt;
local u = require(&amp;quot;Module:string/char&amp;quot;)&lt;br /&gt;
local ugsub = mw.ustring.gsub&lt;br /&gt;
local umatch = mw.ustring.match&lt;br /&gt;
&lt;br /&gt;
local grave = u(0x300)&lt;br /&gt;
local acute = u(0x301)&lt;br /&gt;
local smooth = u(0x313)&lt;br /&gt;
local rough = u(0x314)&lt;br /&gt;
&lt;br /&gt;
local word_ch = &amp;quot;[%w&amp;quot; .. grave .. acute .. smooth .. rough .. u(0x308, 0x342, 0x345) .. &amp;quot;]&amp;quot;&lt;br /&gt;
local following_word_pattern = &amp;quot;^&amp;quot; .. word_ch .. &amp;quot;*%s+&amp;quot; .. word_ch -- not punctuation&lt;br /&gt;
&lt;br /&gt;
local breathing_ch = &amp;quot;[&amp;quot; .. smooth .. rough .. &amp;quot;]&amp;quot;&lt;br /&gt;
local rho_cap_smooth_sub = u(0x1FDC) -- temporary (unused) codepoint for Ρ̓, which has no atomic codepoint&lt;br /&gt;
local rho = &amp;quot;[ρῤῥΡ&amp;quot; .. rho_cap_smooth_sub .. &amp;quot;Ῥ]&amp;quot;&lt;br /&gt;
local two_or_more_rhos =  rho .. rho .. &amp;quot;+&amp;quot;&lt;br /&gt;
local expected_rho_breathings = &amp;quot;^[ρῤΡ&amp;quot; .. rho_cap_smooth_sub .. &amp;quot;]+[ρῥΡῬ]$&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local Grek_stripDiacritics = require(&amp;quot;Module:Grek-common&amp;quot;).stripDiacritics&lt;br /&gt;
&lt;br /&gt;
function export.stripDiacritics(text, lang, sc)&lt;br /&gt;
	-- Do some substitutions done for all Greek text.&lt;br /&gt;
	text = Grek_stripDiacritics(text, lang, sc)&lt;br /&gt;
	-- Remove length marks and double undertie.&lt;br /&gt;
	text = toNFD(text):gsub(&amp;quot;\204[\132\134]&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;\205\156&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	-- Convert grave to acute unless followed by another word.&lt;br /&gt;
	text = ugsub(text, grave .. &amp;quot;()&amp;quot;, function(pos)&lt;br /&gt;
		if not umatch(text, following_word_pattern, pos) then&lt;br /&gt;
			return acute&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
	-- Convert &amp;quot;ῤῥ&amp;quot; to &amp;quot;ρρ&amp;quot;.&lt;br /&gt;
	text = ugsub(toNFC(text):gsub(&amp;quot;Ρ̓&amp;quot;, rho_cap_smooth_sub), two_or_more_rhos, function(rhos)&lt;br /&gt;
		if umatch(rhos, expected_rho_breathings) then&lt;br /&gt;
			return (toNFD(rhos:gsub(rho_cap_smooth_sub, &amp;quot;Ρ̓&amp;quot;)):gsub(breathing_ch, &amp;quot;&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
	end):gsub(rho_cap_smooth_sub, &amp;quot;Ρ̓&amp;quot;)&lt;br /&gt;
	return toNFC(text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>