La documentation pour ce module peut être créée à Module:grc-accent/Documentation

local export = {}

local acute = {
["α"]="ά",["ἀ"]="ἄ",["ἁ"]="ἅ",["Ἀ"]="Ἄ",["Ἁ"]="Ἅ",["ᾱ"]="ά",
["ε"]="έ",["ἐ"]="ἔ",["ἑ"]="ἕ",["Ἐ"]="Ἔ",["Ἑ"]="Ἕ",["ᾰ"]="ά",
["η"]="ή",["ἠ"]="ἤ",["ἡ"]="ἥ",["Ἠ"]="Ἤ",["Ἡ"]="Ἥ",["ῑ"]="ί",
["ι"]="ί",["ἰ"]="ἴ",["ἱ"]="ἵ",["Ἰ"]="Ἴ",["Ἱ"]="Ἵ",["ῐ"]="ί",
["ο"]="ό",["ὀ"]="ὄ",["ὁ"]="ὅ",["Ὀ"]="Ὄ",["Ὁ"]="Ὅ",["ῡ"]="ύ",
["υ"]="ύ",["ὐ"]="ὔ",["ὑ"]="ὕ",["-"]="-",["Ὑ"]="Ὕ",["ῠ"]="ύ",
["ω"]="ώ",["ὠ"]="ὤ",["ὡ"]="ὥ",["Ὠ"]="Ὤ",["Ὡ"]="Ὥ",
["ᾳ"]="ᾴ",["ᾀ"]="ᾄ",["ᾁ"]="ᾅ",["ᾈ"]="ᾌ",["ᾉ"]="ᾍ",
["ῃ"]="ῄ",["ᾐ"]="ᾔ",["ᾑ"]="ᾕ",["ᾘ"]="ᾜ",["ᾙ"]="ᾝ",
["ῳ"]="ῴ",["ᾠ"]="ᾤ",["ᾡ"]="ᾥ",["ᾨ"]="ᾬ",["ᾩ"]="ᾭ",
["αι"]="αί",["αἰ"]="αἴ",["αἱ"]="αἵ",["Αἰ"]="Αἴ",["Αἱ"]="Αἵ",
["ει"]="εί",["εἰ"]="εἴ",["εἱ"]="εἵ",["Εἰ"]="Εἴ",["Εἱ"]="Εἵ",
["οι"]="οί",["οἰ"]="οἴ",["οἱ"]="οἵ",["Οἰ"]="Οἴ",["Οἱ"]="Οἵ",
["υι"]="υί",["υἰ"]="υἴ",["υἱ"]="υἵ",["Υἰ"]="Υἴ",["Υἱ"]="Υἵ",
["αυ"]="αύ",["αὐ"]="αὔ",["αὑ"]="αὕ",["Αὐ"]="Αὕ",["Αὑ"]="Αὕ",
["ευ"]="εύ",["εὐ"]="εὔ",["εὑ"]="εὕ",["Εὐ"]="Εὕ",["Εὑ"]="Εὕ",
["ηυ"]="ηύ",["ηὐ"]="ηὔ",["ηὑ"]="ηὕ",["Ηὐ"]="Ηὕ",["Ηὑ"]="Ηὕ",
["ου"]="ού",["οὐ"]="οὔ",["οὑ"]="οὕ",["Οὐ"]="Οὕ",["Οὑ"]="Οὕ",
["ϊ"]="ΐ",["ϋ"]="ΰ"}

local circumflex = {
["α"]="ᾶ",["ἀ"]="ἆ",["ἁ"]="ἇ",["Ἀ"]="Ἆ",["Ἁ"]="Ἇ",["ᾱ"]="ᾶ",
["ε"]="έ",["ἐ"]="ἔ",["ἑ"]="ἕ",["Ἐ"]="Ἔ",["Ἑ"]="Ἕ",["ᾰ"]="ά",
["η"]="ῆ",["ἠ"]="ἦ",["ἡ"]="ἧ",["Ἠ"]="Ἦ",["Ἡ"]="Ἧ",["ῑ"]="ῖ",
["ι"]="ῖ",["ἰ"]="ἶ",["ἱ"]="ἷ",["Ἰ"]="Ἶ",["Ἱ"]="Ἷ",["ῐ"]="ί",
["ο"]="ό",["ὀ"]="ὄ",["ὁ"]="ὅ",["Ὀ"]="Ὄ",["Ὁ"]="Ὅ",["ῡ"]="ῦ",
["υ"]="ῦ",["ὐ"]="ὖ",["ὑ"]="ὗ",["-"]="-",["Ὑ"]="Ὗ",["ῠ"]="ύ",
["ω"]="ῶ",["ὠ"]="ὦ",["ὡ"]="ὧ",["Ὠ"]="Ὦ",["Ὡ"]="Ὧ",
["ᾳ"]="ᾷ",["ᾀ"]="ᾆ",["ᾁ"]="ᾇ",["ᾈ"]="ᾎ",["ᾉ"]="ᾏ",
["ῃ"]="ῇ",["ᾐ"]="ᾖ",["ᾑ"]="ᾗ",["ᾘ"]="ᾞ",["ᾙ"]="ᾟ",
["ῳ"]="ῷ",["ᾠ"]="ᾦ",["ᾡ"]="ᾧ",["ᾨ"]="ᾮ",["ᾩ"]="ᾯ",
["αι"]="αῖ",["αἰ"]="αἶ",["αἱ"]="αἷ",["Αἰ"]="Αἶ",["Αἱ"]="Αἷ",
["ει"]="εῖ",["εἰ"]="εἶ",["εἱ"]="εἷ",["Εἰ"]="Εἶ",["Εἱ"]="Εἷ",
["οι"]="οῖ",["οἰ"]="οἶ",["οἱ"]="οἷ",["Οἰ"]="Οἶ",["Οἱ"]="Οἷ",
["υι"]="υῖ",["υἰ"]="υἶ",["υἱ"]="υἷ",["Υἰ"]="Υἶ",["Υἱ"]="Υἷ",
["αυ"]="αῦ",["αὐ"]="αὖ",["αὑ"]="αὗ",["Αὐ"]="Αὖ",["Αὑ"]="Αὗ",
["ευ"]="εῦ",["εὐ"]="εὖ",["εὑ"]="εὗ",["Εὐ"]="Εὖ",["Εὑ"]="Εὗ",
["ηυ"]="ηῦ",["ηὐ"]="ηὖ",["ηὑ"]="ηὗ",["Ηὐ"]="Ηὖ",["Ηὑ"]="Ηὗ",
["ου"]="οῦ",["οὐ"]="οὖ",["οὑ"]="οὗ",["Οὐ"]="Οὖ",["Οὑ"]="Οὗ",
["ϊ"]="ῗ",["ϋ"]="ῧ"}

function export.ult(word)
	word = mw.ustring.gsub(word,"˘","")
	for i = mw.ustring.len(word),1,-1 do
		local currentVowel = mw.ustring.sub(word,i,i)
		if acute[currentVowel] then
			return mw.ustring.sub(word,1,i-1)..acute[currentVowel]..mw.ustring.sub(word,i+1)
		end
	end
	return word
end

function export.penult(word2)
	local flag = false
	word = mw.ustring.gsub(word2,"˘","")
	for i = mw.ustring.len(word),1,-1 do
		local currentDipth = mw.ustring.sub(word,i-1,i)
		local currentVowel = mw.ustring.sub(word,i,i)
		if acute[currentDipth] and i > 1 then
			if flag then
				return mw.ustring.sub(word,1,i-2)..acute[currentDipth]..mw.ustring.sub(word,i+1)
			end
		elseif acute[currentVowel] then
			if flag then
				return mw.ustring.sub(word,1,i-1)..acute[currentVowel]..mw.ustring.sub(word,i+1)
			else
				flag = true
			end
		end
	end
	return export.circ(word2) --if there wasn't a second vowel
end

function export.circ(word)
	for i = mw.ustring.len(word),1,-1 do
		local currentVowel = mw.ustring.sub(word,i,i)
		if acute[currentVowel] then
			if mw.ustring.sub(word,i+1,i+1) == "˘" then
				word = mw.ustring.gsub(word,"˘","")
				return mw.ustring.sub(word,1,i-1)..acute[currentVowel]..mw.ustring.sub(word,i+1)
			else
				return mw.ustring.sub(word,1,i-1)..circumflex[currentVowel]..mw.ustring.sub(word,i+1)
			end
		end
	end
	return word
end

return export