Modul:translit/grc

Definition från Wiktionary, den fria ordlistan.
Hoppa till navigering Hoppa till sök

Dokumentation för denna modul finns på /dok (redigera), /test


Syfte[redigera]

Den här modulen translittererar klassisk grekiska.
För en beskrivning av språkspecifika saker att ta i beaktning, se dokumentationen för {{tr}}.

Användning[redigera]

local Translit = require("Modul:translit/grc")
latin_text = Translit.tr("forngrekisk text")

Specifikation[redigera]

Publika funktioner:
  • tr("text") Returnerar innehållet i "text" translittererat till latinska bokstäver på det svenska sättet.

Tester[redigera]

All tests passed. (refresh)

Text Expected Actual
test1_uppercase_letters_in_isolation:
Passed mut.tr("Α,Β,Γ,Δ,Ε") A,B,G,D,E A,B,G,D,E
Passed mut.tr("Ζ,Η,Θ,Ι,Κ,Λ") Z,Ē,Th,I,K,L Z,Ē,Th,I,K,L
Passed mut.tr("Μ,Ν,Ξ,Ο,Π,Ρ") M,N,X,O,P,R M,N,X,O,P,R
Passed mut.tr("Σ,Τ,Υ,Φ,Χ,Ψ,Ω") S,T,Y,F,Ch,Ps,Ō S,T,Y,F,Ch,Ps,Ō
Text Expected Actual
test2_lowercase_letters_in_isolation:
Passed mut.tr("α,β,γ,δ,ε,ζ") a,b,g,d,e,z a,b,g,d,e,z
Passed mut.tr("η,θ,ι,κ,λ,μ") ē,th,i,k,l,m ē,th,i,k,l,m
Passed mut.tr("ν,ξ,ο,π,ρ,σ") n,x,o,p,r,s n,x,o,p,r,s
Passed mut.tr("ς,τ,υ,φ,χ,ψ,ω") s,t,y,f,ch,ps,ō s,t,y,f,ch,ps,ō
Text Expected Actual
test3_gamma_digraphs:
Passed mut.tr("ἰλίγγων") ilíngōn ilíngōn
Passed mut.tr("σάλπιγξ") sálpinx sálpinx
Passed mut.tr("Ἐγχειρίδιον") Encheirídion Encheirídion
Passed mut.tr("ὄγκος") ónkos ónkos
Text Expected Actual
test4_rho_shapes:
Passed mut.tr("ὄστϱακον") óstrakon óstrakon
Text Expected Actual
test4_theta_shapes:
Passed mut.tr("μετάϑεσις") metáthesis metáthesis
Text Expected Actual
test98_LOC_reference:
Passed mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι") Hēsiódou tou Askraíou Érga kai hēmérai Hēsiódou tou Askraíou Érga kai hēmérai
Passed mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς") Hē tou Homḗrou Iliás Hē tou Homḗrou Iliás
Passed mut.tr("Φίληβος ἢ Περὶ ἡδονῆς") Fílēbos ē Peri hēdonēs Fílēbos ē Peri hēdonēs
Passed mut.tr("Ἀγνώστῳ θεῷ") Agnṓstō theō Agnṓstō theō
Passed mut.tr("κεῖται παρ’ Ἅιδῃ") keitai par’ Háidē keitai par’ Háidē
Passed mut.tr("Αἴτια Ῥωμαϊκά") Aítia Rhōmaiká Aítia Rhōmaiká
Passed mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον") Hóti oud’ hēdéōs zēn ésti kat’ Epíkouron Hóti oud’ hēdéōs zēn ésti kat’ Epíkouron
Passed mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ") Peri tou mē rhadíōs pisteúein diabolē Peri tou mē rhadíōs pisteúein diabolē
Passed mut.tr("ἀΰπνους νύκτας ἴαυον") aýpnous nýktas íauon aýpnous nýktas íauon
Passed mut.tr("Λητοῦς καὶ Διὸς υἱός") Lētous kai Dios huiós Lētous kai Dios huiós
Passed mut.tr("ὑϊκὸν πάσχειν") hyikon páschein hyikon páschein
Passed mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς") eipe pros ton ándra ton heōutēs eipe pros ton ándra ton heōutēs
Passed mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;") tí toud’ an heúrēm’ hēuron eutychésteron; tí toud’ an heúrēm’ hēuron eutychésteron;
Passed mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ") Tou Kata pasōn hairéseōn elénchou biblíon aʹ Tou Kata pasōn hairéseōn elénchou biblíon aʹ
Passed mut.tr("καλὸν κἀγαθόν") kalon kagathón kalon kagathón
Passed mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου") ṓchonto thoimátion labóntes mou ṓchonto thoimátion labóntes mou
Passed mut.tr("Περὶ ἰλίγγων") Peri ilíngōn Peri ilíngōn
Passed mut.tr("ὅτε τ’ ἴαχε σάλπιγξ") hóte t’ íache sálpinx hóte t’ íache sálpinx
Passed mut.tr("Ἐγχειρίδιον ἁρμονικῆς") Encheirídion harmonikēs Encheirídion harmonikēs
Passed mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι") álasta de wérga páthon kaka mēsaménoi álasta de wérga páthon kaka mēsaménoi
Passed mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ") Damaréta t’ eratá te Wianthemís Damaréta t’ eratá te Wianthemís
Passed mut.tr("ξένϝος") xénwos xénwos
Passed mut.tr("Πάτροϙλος") Pátroḳlos Pátroḳlos
Text Expected Actual
test99_Oedipus_Rex:
Passed mut.tr("Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ.") Iou ioú· ta pántʼ an exḗkoi safē. Iou ioú· ta pántʼ an exḗkoi safē.
Passed mut.tr("Ὦ φῶς, τελευταῖόν σε προσϐλέψαιμι νῦν,") Ō fōs, teleutaión se prosblépsaimi nyn, Ō fōs, teleutaión se prosblépsaimi nyn,
Passed mut.tr("ὅστις πέφασμαι φύς τʼ ἀφʼ ὧν οὐ χρῆν, ξὺν οἷς τʼ") hóstis péfasmai fýs tʼ afʼ hōn ou chrēn, xyn hois tʼ hóstis péfasmai fýs tʼ afʼ hōn ou chrēn, xyn hois tʼ
Passed mut.tr("οὐ χρῆν ὁμιλῶν, οὕς τέ μʼ οὐκ ἔδει κτανών.") ou chrēn homilōn, hoús té mʼ ouk édei ktanṓn. ou chrēn homilōn, hoús té mʼ ouk édei ktanṓn.


-- Denna modul används för att transkribera antik grekiska till svenska.
-- 
-- För att transkribera modern grekiska kan ett liknande system användas.
-- Det hanteras dock av särskilda moduler. Se:
-- 
-- [TODO]
--
--
-- Denna modul strävar efter att följa det system som används av
-- "Library of Congress". Det finns i skrivande stund beskrivet här:
-- 
-- https://www.loc.gov/catdir/cpso/romanization/greek.pdf
--
-- Några avsteg har gjorts för att bättre reflektera hur orden vanligen
-- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis",
-- inte "phronēsis".
--
-- Notera att det finns andra sätt för att transkribera forngrekiska.
-- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B
-- eller den cypriska stavelseskriften.
--
-- Lägg också märke till att denna version av modulen hanterar de flesta
-- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan
-- (och bör) göra detta mer nyanserat.
--
--
-- Denna modul används av följande mall:
-- {{tr}}
--
-- Modulen är författad av (och underhålls av) [[Användare:Gabbe]]

local export = {}
local Q = require("Modul:queue")

local multibyte_char_pattern = ".[\128-\191]*"
local acute_accent = "́"

-- börja med de vanligaste bokstäverna
latin_by_greek = {
	["Α"]="A", ["α"]="a",
	["Β"]="B", ["β"]="b",
	["Γ"]="G", ["γ"]="g",
	["Δ"]="D", ["δ"]="d",
	["Ε"]="E", ["ε"]="e",
	["Ζ"]="Z", ["ζ"]="z",
	["Η"]="Ē", ["η"]="ē",
	["Θ"]="Th", ["θ"]="th",
	["Ι"]="I", ["ι"]="i",
	["Κ"]="K", ["κ"]="k",
	["Λ"]="L", ["λ"]="l",
	["Μ"]="M", ["μ"]="m",
	["Ν"]="N", ["ν"]="n",
	["Ξ"]="X", ["ξ"]="x",
	["Ο"]="O", ["ο"]="o",
	["Π"]="P", ["π"]="p",
	["Ρ"]="R", ["ρ"]="r",
	["Σ"]="S", ["σ"]="s", ["ς"]="s",
	["Τ"]="T", ["τ"]="t",
	["Υ"]="Y", ["υ"]="y",
	["Φ"]="F", ["φ"]="f",
	["Χ"]="Ch", ["χ"]="ch",
	["Ψ"]="Ps", ["ψ"]="ps",
	["Ω"]="Ō", ["ω"]="ō"
}

-- särvariant av beta
latin_by_greek["ϐ"]=latin_by_greek["β"]

-- särvariant av theta
latin_by_greek["ϑ"]=latin_by_greek["θ"]

-- särvariant av sigma
latin_by_greek["Ϲ"]=latin_by_greek["Σ"]; latin_by_greek["ϲ"]=latin_by_greek["σ"]

-- två arkaiska bokstäver
latin_by_greek["Ϝ"]="W"; latin_by_greek["ϝ"]="w"
latin_by_greek["Ϙ"]="Ḳ"; latin_by_greek["ϙ"]="ḳ"

-- sen en separat tabell för att hålla reda på vilka som har "spiritus asper":
spiritus_asper = {
	["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true,
	["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true,
	["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true,
	["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true,
	["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true,
	["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true,
	["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true,
	["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true,

	["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true,
	["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true,
	["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true,
	["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true,
	["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true,
	["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true,
	["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true,
	["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true,
}

-- sen en separat tabell för versalerna:
versaler = {
	["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true,
	["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, 
	["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, 
	["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, 
	["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, 
	["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, 
	["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, 
	["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, 
	["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, 
	["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, 
	["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, 
	["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, 
	["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, 
	["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, 
	["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, 
	["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, 
	["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, 
	["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, 
	["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, 
	["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, 
	["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true,
}
-- sen en för gemenerna:
gemener = {
	["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, 
	["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, 
	["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, 
	["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, 
	["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, 
	["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, 
	["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, 
	["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, 
	["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, 
	["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, 
	["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, 
	["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, 
	["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, 
	["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, 
	["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true,
	["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, 
	["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, 
	["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, 
	["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, 
	["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, 
	["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, 
	["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, 
	["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, 
	["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, 
	["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, 
	["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, 
	["ῠ"] = true, ["ϱ"] = true,
}
-- sen en tabell för de med akut accent:
with_tonos = {
	["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, 
	["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, 
	["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, 
	["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, 
	["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, 
	["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, 
	["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, 
	["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, 
	["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, 
	["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, 
	["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, 
	["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true,
}

-- sen några separata tabeller för att hålla reda på vilken slags bokstav det är
alfa = {
	["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true,
	["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, 
	["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, 
	["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, 
	["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, 
	["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, 
	["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, 
	["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, 
	["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, 
	["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, 
	["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true,
	["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, 
}
gamma = {
	["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true,
	["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true,
	["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true,
	["ᵧ"] = true, ["ᴦ"] = true,
}
epsilon = {
	["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true,
	["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true,
	["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true,
	["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true,
	["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true,
	["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true,
	["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true,
	["Ὲ"] = true,
}
eta = {
	["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true,
	["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true,
	["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true,
	["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true,
	["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true,
	["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true,
	["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true,
	["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true,
	["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true,
	["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true,
	["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true,
	["ῌ"] = true,
}
jota = {
	["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, 
	["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, 
	["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, 
	["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, 
	["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, 
	["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, 
	["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, 
	["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, 
	["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, 
	["ι"] = true, ["ͺ"] = true, 
}
kappa = {
	["κ"] = true, ["ϰ"] = true, ["𝛋"] = true, ["𝛞"] = true, ["𝜅"] = true,
	["𝜘"] = true, ["𝜿"] = true, ["𝝒"] = true, ["𝝹"] = true, ["𝞌"] = true,
	["𝞳"] = true, ["𝟆"] = true, ["Κ"] = true, ["𝚱"] = true, ["𝛫"] = true,
	["𝜥"] = true, ["𝝟"] = true, ["𝞙"] = true, ["ϗ"] = true, ["Ϗ"] = true,
}
xi = {
	["ξ"] = true, ["𝛏"] = true, ["𝜉"] = true, ["𝝃"] = true, ["𝝽"] = true, 
	["𝞷"] = true, ["Ξ"] = true, ["𝚵"] = true, ["𝛯"] = true, ["𝜩"] = true, 
	["𝝣"] = true, ["𝞝"] = true, 
}
omikron = {
	["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true,
	["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true,
	["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true,
	["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true,
	["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true,
	["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true,
}
rho = {
	["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, 
	["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, 
	["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, 
	["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, 
	["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, 
}
ypsilon = {
	["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, 
	["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, 
	["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, 
	["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, 
	["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, 
	["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, 
	["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, 
	["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, 
	["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, 
}
chi = {
	["χ"] = true, ["𝛘"] = true, ["𝜒"] = true, ["𝝌"] = true, ["𝞆"] = true,
	["𝟀"] = true, ["Χ"] = true, ["𝚾"] = true, ["𝛸"] = true, ["𝜲"] = true,
	["𝝬"] = true, ["𝞦"] = true, ["ᵡ"] = true, ["ᵪ"] = true
}
omega = {
	["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, 
	["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, 
	["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, 
	["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, 
	["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, 
	["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, 
	["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, 
	["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, 
	["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, 
	["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, 
	["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, 
	["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, 
}
-- de som har två prickar ovanför vokalen
hiatus = {
	["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true,
	["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, 
}

-- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken
for i,v in pairs(versaler) do
	if(alfa[i]) then
		latin_by_greek[i] = latin_by_greek["Α"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["α"]
		end
	elseif(epsilon[i]) then
		latin_by_greek[i] = latin_by_greek["Ε"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["ε"]
		end
	elseif(eta[i]) then
		latin_by_greek[i] = latin_by_greek["Η"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["η"]
		end
	elseif(jota[i]) then
		latin_by_greek[i] = latin_by_greek["Ι"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["ι"]
		end
	elseif(omikron[i]) then
		latin_by_greek[i] = latin_by_greek["Ο"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["ο"]
		end
	elseif(rho[i]) then
		latin_by_greek[i] = latin_by_greek["Ρ"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = latin_by_greek[i].."h"
		end
	elseif(ypsilon[i]) then
		latin_by_greek[i] = latin_by_greek["Υ"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["υ"]
		end
	elseif(omega[i]) then
		latin_by_greek[i] = latin_by_greek["Ω"]
		if(spiritus_asper[i]) then
			latin_by_greek[i] = "H"..latin_by_greek["ω"]
		end
	end
	if with_tonos[i] then
		latin_by_greek[i] = mw.ustring.toNFC(latin_by_greek[i] .. acute_accent)
	end
end

for i,v in pairs(gemener) do
	if(alfa[i]) then
		latin_by_greek[i] = latin_by_greek["α"]
	elseif(epsilon[i]) then
		latin_by_greek[i] = latin_by_greek["ε"]
	elseif(eta[i]) then
		latin_by_greek[i] = latin_by_greek["η"]
	elseif(jota[i]) then
		latin_by_greek[i] = latin_by_greek["ι"]
	elseif(omikron[i]) then
		latin_by_greek[i] = latin_by_greek["ο"]
	elseif(rho[i]) then
		latin_by_greek[i] = latin_by_greek["ρ"]
	elseif(ypsilon[i]) then
		latin_by_greek[i] = latin_by_greek["υ"]
	elseif(omega[i]) then
		latin_by_greek[i] = latin_by_greek["ω"]
	end
	if(spiritus_asper[i]) then
		if(rho[i]) then
			latin_by_greek[i] = latin_by_greek[i].."h"
		else
			latin_by_greek[i] = "h"..latin_by_greek[i]
		end
	end
	if with_tonos[i] then
		latin_by_greek[i] = mw.ustring.toNFC(latin_by_greek[i] .. acute_accent)
	end
end

-- Själva transkriberingsfunktionen för forngrekiska
function export.tr( text )
	greek_q = Q()
	latin_q = Q()

	for c in string.gmatch(text, multibyte_char_pattern) do
		Q.enqueue(greek_q, c)
	end

	repeat
		local x = Q.dequeue(greek_q)
		local y = Q.peekFirst(greek_q)
		local z = Q.peekSecond(greek_q)
		local u = Q.peekLast(latin_q)
		local reversed_comma_above = "̔"

		if not latin_by_greek[x] then -- icke-grekiskt tecken
			Q.enqueue(latin_q, x)
		-- diverse undantag, startar med "spiritus asper" som del av en diftong
		elseif (Q.isEmpty(latin_q) or u == " ") and spiritus_asper[y] then
			Q.enqueue(latin_q, string.sub(latin_by_greek[y],1,1)) -- versalt "H" eller gement "h"
			if (ypsilon[x] and jota[y] and (not hiatus[y])) then
				if(with_tonos[x]) then
					Q.enqueue(latin_q, "ú")
				else
					Q.enqueue(latin_q, "u")
				end
			else
				Q.enqueue(latin_q, latin_by_greek[x])
			end
			if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then
				if(with_tonos[y]) then
					Q.enqueue(latin_q, "ú")
				else
					Q.enqueue(latin_q, "u")
				end
			else
				Q.enqueue(latin_q, string.sub(latin_by_greek[y],2))
			end
			Q.dequeue(greek_q)
		-- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ"
		elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then
			Q.enqueue(latin_q, latin_by_greek[x])
			if(with_tonos[y]) then
				Q.enqueue(latin_q, "ú")
			else
				Q.enqueue(latin_q, "u")
			end
			Q.dequeue(greek_q)
		-- sen diftongen "υι"
		elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then
			if(with_tonos[x] and spiritus_asper[x]) then
				Q.enqueue(latin_q, "hú")
			elseif(with_tonos[x]) then
				Q.enqueue(latin_q, "ú")
			elseif(spiritus_asper[x]) then
				Q.enqueue(latin_q, "hu")
			else
				Q.enqueue(latin_q, "u")
			end
			Q.enqueue(latin_q, latin_by_greek[y])
			Q.dequeue(greek_q)
    	-- sen bokstavsföljden "γγ"
		elseif (gamma[x] and gamma[y]) then
			Q.enqueue(latin_q,"n")
			Q.enqueue(latin_q,latin_by_greek["γ"])
			Q.dequeue(greek_q)
		-- sen bokstavsföljden "γκ"
		elseif (gamma[x] and kappa[y]) then
			Q.enqueue(latin_q,"n")
			Q.enqueue(latin_q,latin_by_greek["κ"])
			Q.dequeue(greek_q)
		-- sen bokstavsföljden "γξ"
		elseif (gamma[x] and xi[y]) then
			Q.enqueue(latin_q,"n")
			Q.enqueue(latin_q,latin_by_greek["ξ"])
			Q.dequeue(greek_q)
		-- sen bokstavsföljden "γχ"
		elseif (gamma[x] and chi[y]) then
			Q.enqueue(latin_q,"n")
			Q.enqueue(latin_q,latin_by_greek["χ"])
			Q.dequeue(greek_q)
		-- sen, när "spiritus asper" hanteras med modifierare
		elseif y == reversed_comma_above then
			Q.enqueue(latin_q, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger?
			Q.enqueue(latin_q, latin_by_greek[x])
			Q.dequeue(greek_q)
		else
			Q.enqueue(latin_q, latin_by_greek[x])
		end
	until Q.isEmpty(greek_q)

	local tbl = {}

	repeat
		local x = Q.dequeue(latin_q)
		table.insert(tbl,x)
	until Q.isEmpty(latin_q)
	
	return table.concat(tbl, "")
end

return export