User:Sarri.greek (CAT) » Module grk-pronunciation doc :: data doc »» invoked at Template grk-IPA :: Template gkm-IPA
{{subst:chars|l|grc|ἀ^νθρωπι^κός}} {{grc-IPA|{{subst:chars|grc|κλά˘σῐς}}}}
-- 2024.03.24. ]-- all my notes with !! and my questions/tocheck with ??
-- this is ] its TESTS at ]
--!! renamed byz1 to med1 and byz2 to med2
--?? check all geminate consonants med1
--?? for el (byz2 too?)
--[=[!!??
* GENERAL problems at main page.
* for med and el accept imput Rho Ρ ρ initial without daseia
* for el (and med2, med1?) keep together .ks for ξ, // .ps for ψ // .zm .fθ //
we have to check all the clusters that stay together kt, etc.
* for el (med2?) no repetition of same consonant at αυ ευ ηυ like if.fi ev.via
* for el (med2, med??) μπ ντ γκ initial = b d g, median mb, nd, & γγ ŋg / ŋɟ
* for med (med2)? τζ has double IPA ts or tz (here, not need t͡s or d͡z
* ks ps NO.breaksyllable / zm NObreakSyllabe // for el we use τσ τζ = t͡s // d͡z
How do i write at τ, itself+1=σ = for ts dz & # 865; & # x361; U+0361 ͡ COMBINING DOUBLE INVERTED BREVE
]=]--
-- https://www.mediawiki.orghttps://dictious.com/en/Extension:Scribunto/Lua_reference_manual#mw.ustring.char
local U = mw.ustring.char -- integers are Unicode codepoints rather than byte values.
local gmatch = mw.ustring.gmatch
local m_utils_data = require("Module:grc-utilities/data")
local diacritics = m_utils_data.diacritics
-- these are IPA symbols
local nonsyllabic = U(0x32F)
local high = U(0x341) -- combining acute tone mark
local low = U(0x340) -- combining grave tone mark
local midHigh = U(0x1DC4) -- mid–high pitch
local midLow = U(0x1DC6) -- mid–low pitch
local highMid = U(0x1DC7) -- high–mid pitch
local rising = U(0x30C) -- combining caron
local falling = diacritics.Latin_circum -- combining circumflex
local voiceless = U(0x325) -- combining ring below
local aspirated = 'ʰ'
local stress_mark = 'ˈ'
local long = 'ː'
local macron = diacritics.spacing_macron
local breve = diacritics.spacing_breve
local circumflex_on_long_vowel = falling
local acute_on_long_vowel = rising
local acute_on_short_vowel = high
local grave_pitch_mark = low
local data = {}
local function get_pitch_marks(accent_type, long)
if accent_type == 'acute' then
if long then
return acute_on_long_vowel
else
return acute_on_short_vowel
end
elseif accent_type == 'grave' then
return grave_pitch_mark
elseif accent_type == 'circum' then
return circumflex_on_long_vowel
end
return ''
end
local function alpha(breathing, accent, iota, isLong)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or iota or accent == 'circum') and long or ''
local offglide = iota and ('i' .. nonsyllabic) or ''
-- ἄνθρωπος // ᾰ̓́νθρωπος // ᾆσμα
return {
-- ἀκούω ἄνθρωπος ᾆσμα Ἅλεις
-- ᾰ̓́νθρωπος
= breathing .. 'a' .. pitch .. length .. offglide,
= breathing .. stress .. 'a',
= stress .. 'a',
= stress .. 'a',
= stress .. 'a',
-- ακούω Αλέξανδρος άνθρωπος άσμα Άλεξ
= stress .. 'a'
}
end
local function iota(breathing, accent, isLong)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or accent == 'circum') and long or ''
return {
-- ἱστορία ἴον ἰξυῗ ἷξις Ἴλιον
-- ῐ̔στορῐ́ᾱ
-- ῐ̓́ον
= breathing .. 'i' .. pitch .. length,
= breathing .. stress .. 'i',
= stress .. 'i',
= stress .. 'i',
= stress .. 'i',
-- ιστορία ίον ιόν Ίλιο
= stress .. 'i'
}
end
local function ypsilon(breathing, accent, isLong)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or accent == 'circum') and long or ''
return {
-- ὑψηλός ὕψι ὗλις Ὕλη
-- ῠ̔ψηλός
= breathing .. 'y' .. pitch .. length,
= breathing .. stress .. 'y',
= stress .. 'y',
= stress .. 'y',
= stress .. 'i',
-- υψηλός Ύλλας
= stress .. 'i'
}
end
local function omicron(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, false)
return {
-- Ὅμηρος -- does it accept nonaccent? ομιλω
= breathing .. 'o' .. pitch,
= breathing .. stress .. 'o',
= stress .. 'o',
= stress .. 'o',
= stress .. 'o',
-- Όμηρος
= stress .. 'o'
}
end
local function epsilon(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, false)
return {
-- ἔρχομαι Ἕλενος
= breathing .. 'e' .. pitch,
= breathing .. stress .. 'e',
= stress .. 'e',
= stress .. 'e',
= stress .. 'e',
-- έρχομαι Ελένη
= stress .. 'e'
}
end
local function eta(breathing, accent, iota)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
local offglide = iota and ('i' .. nonsyllabic) or ''
return {
-- ἦρα Ἡραῖον
= breathing .. 'ɛ' .. pitch .. long .. offglide,
= breathing .. stress .. 'e̝',
= stress .. 'i',
= stress .. 'i',
= stress .. 'i',
-- ήρα Ήρα
= stress .. 'i'
}
end
local function omega(breathing, accent, iota)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
local offglide = iota and ('i' .. nonsyllabic) or ''
return {
-- ᾠδή Ὥδωνις
= breathing .. 'ɔ' .. pitch .. long .. offglide,
= breathing .. stress .. 'o',
= stress .. 'o',
= stress .. 'o',
= stress .. 'o',
= stress .. 'o'
}
end
local function ai(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
-- αἴρω Αἶσα but Ἄις Ἄϊς
= breathing .. 'a' .. pitch .. 'i' .. nonsyllabic,
= breathing .. stress .. 'ɛ',
= stress .. 'ɛ',
= stress .. 'e',
= stress .. 'e',
-- αίρω Αίσα
= stress .. 'e'
}
end
local function ei(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
-- εἶδος Εἰδομονεύς
= breathing .. 'e' .. pitch .. long,
= breathing .. stress .. 'i',
= stress .. 'i',
= stress .. 'i',
= stress .. 'i',
-- είδος Ειδομενέας
= stress .. 'i'
}
end
local function oi(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
-- οἰωνός Οἴτη
= breathing .. 'o' .. pitch .. 'i' .. nonsyllabic,
= breathing .. stress .. 'y',
= stress .. 'y',
= stress .. 'y',
= stress .. 'i',
-- οιωνός Οίτη
= stress .. 'i'
}
end
local function ui(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
-- υἱός υἷος
= breathing .. 'y' .. pitch .. long,
= breathing .. stress .. 'y',
= stress .. 'y',
= stress .. 'y',
= stress .. 'i',
-- υιός Υιός
= stress .. 'i'
}
end
local function au(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. 'a' .. pitch .. 'u' .. nonsyllabic,
--!! unvoiced are κπτ χφθ σς ξψ
--?? what is 2=σ+3=μ = x followed by σμ
= {
{'2=σ+3=μ', stress .. 'a' .. 'w'},
{'2.unvoiced', breathing .. stress .. 'a' .. 'ʍ'},
breathing .. stress .. 'a' .. 'w',
},
= {
{'2=σ+3=μ', stress .. 'aβ', },
{ '2.unvoiced', stress .. 'aɸ', },
stress .. 'aβ',
},
= {
{'2=σ+3=μ', stress .. 'av', },
{ '2.unvoiced', stress .. 'af', },
stress .. 'av',
},
= {
{'2=σ+3=μ', stress .. 'av', },
{ '2.unvoiced', stress .. 'af', },
stress .. 'av',
},
= {
-- ??αυσμ
{'2=σ+3=μ', stress .. 'av', },
-- κ Καύκαος / π αυπ... / τ αύτανδρος / χ αυχένας / σ ναυς / ξ αυξάνω / ψ αυψ...
--??TODO EXCEPT φ αυφ..> af not aff
{ '2.unvoiced', stress .. 'af', },
-- αυγ / αυδ / αυα αυε αυο /
--??TODO EXCEPT αυβ = av not avv
stress .. 'av',
},
}
end
local function eu(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
--!! unvoiced are κπτ χφθ σς ξψ
return {
= breathing .. 'e' .. pitch .. 'u' .. nonsyllabic,
= {
{'2=σ+3=μ', stress .. 'e' .. 'w'},
{'2.unvoiced+3=μ', breathing .. stress .. 'e' .. 'ʍ'},
breathing .. stress .. 'e' .. 'w',
},
= {
{'2=σ+3=μ', stress .. 'eβ', },
{ '2.unvoiced', stress .. 'eɸ', },
stress .. 'eβ',
},
= {
{'2=σ+3=μ', stress .. 'ev', },
{ '2.unvoiced', stress .. 'ef', },
stress .. 'ev',
},
= {
{'2=σ+3=μ', stress .. 'ev', },
{ '2.unvoiced', stress .. 'ef', },
stress .. 'ev',
},
= {
{'2=σ+3=μ', stress .. 'ev', },
--??TODO EXCEPT φ ευφ..> ef not eff ευφυής
{ '2.unvoiced', stress .. 'ef', },
--??TODO EXCEPT β ευβ..> ev not evv Εύβοια
stress .. 'ev',
},
}
end
local function hu(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
--!! unvoiced are κπτ χφθ σς ξψ
return {
= breathing .. 'ɛ' .. pitch .. 'ːu' .. nonsyllabic,
= {
{'2=σ+3=μ', stress .. 'e̝' .. 'w'},
{'2.unvoiced', breathing .. stress .. 'e̝' .. 'ʍ'},
breathing .. stress .. 'e̝' .. 'w',
},
= {
{'2=σ+3=μ', stress .. 'iβ', },
{ '2.unvoiced', stress .. 'iɸ', },
stress .. 'iβ',
},
= {
{'2=σ+3=μ', stress .. 'iv', },
{ '2.unvoiced', stress .. 'if', },
stress .. 'iv',
},
= {
{'2=σ+3=μ', stress .. 'iv', },
{ '2.unvoiced', stress .. 'if', },
stress .. 'iv',
},
= {
{'2=σ+3=μ', stress .. 'iv', },
--??TODO EXCEPT φ ηυφ..> if not iff -- no example
{ '2.unvoiced', stress .. 'if', },
--??TODO EXCEPT β ηυβ..> iv not ivv --no example
stress .. 'iv',
},
}
end
local function ou(breathing, accent)
local breathing = breathing == 'rough' and { 'h', '(h)' } or { '', '' }
local stress = accent and stress_mark or ''
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. 'u' .. pitch .. long,
= breathing .. stress .. 'u',
= stress .. 'u',
= stress .. 'u',
= stress .. 'u',
= stress .. 'u'
}
end
data = {
= {
= ' ',
= ' ',
= ' ',
= ' ',
= ' ',
= ' ',
},
}
data = {
= {
= true,
= true,
= true,
},
-- βδέλλα βλέμμα βρόμος
-- μβ = -- ἄμβων ἀββᾶ -- άμβωνας αββάς Σάββατο
= {
= 'b',
= 'b',
= {
{ '-1=μ', 'b', },
'β'
},
--!! gemination of /v, ð, ɣ/ in 10th century? CHECKTHIS gkm.Camb.Gr.3.4.3
= {
{ '-1=μ', 'b', },
'v'
},
--??CHECKTHIS
= {
{ '1=β', '', },
{ '-1=μ', 'b', }, --??CHECKTHIS
'v',
},
-- άμβωνας (see μ)
= {
{ '1=β', '', },
{ '-1=μ', 'v', }, --!! not b
'v',
},
},
}
data = {
= {
= true,
= true,
= true,
},
--!! dorsal are κγχ ξ
--!! prefront means (cf main page) "frontVowel = ιηευ" or "frontDiphth - αι or οι" and not is(letter2, "iDiaer"))
= {
= {
{ '1.dorsal/1=μ', 'ŋ', }, -- γκ γγ γχ γξ or γμ?
'ɡ',
},
= {
{ '1.dorsal', 'ŋ', }, -- γκ γγ γχ γξ
'ɡ',
},
= {
{ '1.dorsal',
{
{ '1~preFront', 'ɲ', },
'ŋ',
},
},
{ '0~preFront',
{
{ '-1=γ', 'ɟ', },
'ʝ',
},
},
{ '-1=γ', 'ɡ', },
'ɣ', },
= {
{ '1.dorsal',
{
{ '1~preFront', 'ŋ', }, -- oops ɲ wrong { '1~preFront', 'ɲ', },
'ŋ',
},
},
{ '0~preFront',
{
{ '-1=γ', 'ɟ', },
'ʝ',
},
},
{ '-1=γ', 'ɡ', },
'ɣ',
},
= {
-- 'γγίζω
{ '1.dorsal', {
{ '1~preFront', 'ŋ', }, -- oops ɲ wrong { '1~preFront', 'ɲ', },
'ŋ', },
},
{ '0~preFront',
{
{ '-1=γ', 'ɟ', },
'ʝ',
},
},
{ '-1=γ', 'ɡ', },
'ɣ',
},
= {
-- κ γκάφα αγκώνας BUT αγκράφα // γ αγγούρι // χ άγχος // ξ ελέγξω
-- γκιώνης γκέλα κάγκελο άγγελος σύγκειμαι εγκαίνια εγγυήτρια έγκυος/ no γκυι
{ '1.dorsal', {
{ '1~preFront', 'ŋ', }, -- not ɲ For /ŋɟ ŋç/ see §1.4.2.4. at Mackridge, Peter (1985) The Modern Greek Language
'ŋ', },
},
{ '0~preFront',
{
{ '-1=γ', 'ɟ', },
'ʝ', -- γείτονας γεύομαι
},
},
{ '-1=γ', 'ɡ', },
'ɣ',
},
},
}
data = {
= {
= true,
},
= {
= 'd',
= 'd',
= {
{ '-1=ν', 'd', },
'ð',
},
--!! gemination of /v, ð, ɣ/ in 10th century? CHECKTHIS gkm.Camb.Gr.3.4.3
= {
{ '-1=ν', 'd', },
'ð',
},
= {
{ '1=δ', '', },
{ '-1=ν', 'd', },
'ð',
},
= {
{ '1=δ', '', },
{ '-1=ν', 'd', },
'ð',
},
},
}
data = {
= { },
= {
= 'zd',
= 'z',
= 'z',
= 'z',
= {
{ '1=ζ', '', },
'z',
},
= {
{ '1=ζ', '', },
'z',
},
},
}
data = {
= {
= true,
},
= {
= 'tʰ',
= 'tʰ',
= 'θ',
= 'θ',
= {
{ '1=θ', '', },
'θ',
},
= {
{ '1=θ', '', },
'θ',
},
},
}
data = {
= {
= true,
= true,
= true,
= true,
},
--!! voiced are βδγ μν λρ ζ and ϝ
--!! stops are πβφ κγχ τδθ ξ ψ
--!! aspirated are χφθ
--!! prefront means (cf main page) "frontVowel = ιηευ" or "frontDiphth - αι or οι" and not is(letter2, "iDiaer"))
= {
= {
{ '1.voiced+1.stop', 'ɡ', },
{ '1.aspirated', 'kʰ', },
'k',
},
= {
{ '1.voiced+1.stop', 'ɡ', },
'k',
},
= {
{ '1=κ', '', },
{ '1.voiced+1.stop', 'ɡ', },
{
'-1=γ',
{
{ '0~preFront', 'ɟ' },
'ɡ',
},
},
{ '0~preFront', 'c', },
'k',
},
= {
{ '1=κ', '', },
{ '1.voiced+1.stop', 'ɡ', },
{
'-1=γ',
{
{ '0~preFront', 'ɟ' },
'ɡ',
},
},
{ '0~preFront', 'c', },
'k',
},
= {
{ '1=κ', '', },
{ '1.voiced+1.stop', 'ɡ', },
{
'-1=γ',
{
{ '0~preFront', 'ɟ' },
'ɡ',
},
},
{ '0~preFront', 'c', },
'k',
},
= {
{ '1=κ', '', },
--?? what is this
{ '1.voiced+1.stop', 'ɡ', },
{
'-1=γ', -- αγκώνας BUT initial γκ = g
{
{ '0~preFront', 'ɟ' },
'ɡ',
},
},
{ '0~preFront', 'c', },
'k',
},
},
}
data = {
= { },
= {
= 'l',
= 'l',
= 'l',
= 'l',
= {
{ '1=λ', '', },
'l',
},
-- Ελλάδα εραλδικός
= {
{ '1=λ', '', },
'l',
},
},
}
data = {
= {
= true,
},
= {
= 'm',
= 'm',
= 'm',
= 'm',
= {
{ '1=μ', '', },
'm',
},
-- μβ μφ = ɱv ɱf
= {
{ '1=β', 'ɱ', },
{ '1=φ', 'ɱ', },
{ '1=μ', '', },
'm',
},
},
}
data = {
= { },
= {
= 'n',
= 'n',
= 'n',
= 'n',
= {
{ '1=ν', '', },
'n',
},
--??CHEKTHIS ντζ νεράντζι - νγκ ανγκορά
= {
{ '1=ν', '', },
'n',
},
},
}
data = {
= { },
= {
= 'ks',
= 'ks',
= 'ks',
--!!??CHECKTHIS this ks must never separate
= 'ks',
= 'ks',
= 'ks',
},
}
data = {
= {
= true,
= true,
= true,
= true,
},
--!! aspirated are χφθ
= {
= {
{ '1.aspirated', 'pʰ', },
'p',
},
= 'p',
= 'p',
= 'p',
--??CHECKTHIS check initial ΜΠ
= {
{ '-1=μ', 'b' },
{ '1=π', '', },
'p',
},
--??CHECKTHIS check initial ΜΠ and manually override mb for some loanwords
= {
{ '-1=μ', 'b' }, -- μπόμπα = bomba αμπούλα = ambula BUT MANUALLY μπαμπάς babas
{ '1=π', '', },
'p',
},
},
}
data = {
= { },
= {
= {
{ '1=ρ/1=ῥ/-1=ρ', 'r̥', },
'r',
},
= 'r',
= 'r',
= 'r',
= {
{ '1=ρ', '', },
'r',
},
= {
{ '1=ρ', '', },
'r',
},
},
}
data = {
= { },
= {
= 'r̥',
= 'r',
= 'r',
= 'r',
= {
{ '1=ρ', '', },
'r',
},
--!! for el-kth Katharevousa spellings
= {
{ '1=ρ', '', },
'r',
},
},
}
data = {
= {
= true,
= true,
= true,
= true,
= true,
= true,
= true,
= true,
},
--!! voiced are βδγ μν λρ ζ and ϝ
= {
= {
{ '1.voiced', 'z', },
's',
},
= {
{ '1.voiced', 'z', },
's',
},
= {
{ '1.voiced', 'z', },
's',
},
= {
{ '1.voiced', 'z', },
's',
},
= {
{ '1=σ', '', },
{ '1.voiced', 'z', },
's',
},
= {
{ '1=σ', '', },
--?? keep this zm together xxσμένος = xx.zme.nos
{ '1.voiced', 'z', },
's',
},
},
}
data = {
= {
= true,
= true,
= true,
},
--!! aspirated are χφθ
= {
= {
{ '1.aspirated', 'tʰ', },
't',
},
= 't',
= 't',
= 't',
--??CHECKTHIS check initial ντ
= {
{ '-1=ν', 'd' },
--!! need double for τζ = ts AND τζ
{ '1=τ', '', },
't',
},
--??CHECKTHIS check initial ντ and manually override mb for some loanwords
= {
{ '-1=ν', 'd' }, -- Ντάντολο = dandolo αντί = andi BUT MANUALLY νταντά = dada
--?? τσ τζ How do i write, itself+1=σ = for ts dz & # 865; & # x361; U+0361 ͡ COMBINING DOUBLE INVERTED BREVE
{ '1=σ', 't͡s', },
{ '1=ζ', 'd͡z', },
{ '1=τ', '', },
't',
},
},
}
data = {
= {
= true,
= true,
= true,
},
= {
= 'pʰ',
= 'pʰ',
= 'ɸ',
= 'f',
= {
{ '1=φ', '', },
'f',
},
= {
{ '1=φ', '', },
'f',
},
},
}
data = {
= {
= true,
= true,
= true,
},
= {
= 'kʰ',
= 'kʰ',
= {
{ '1=χ', '', },
{ '0~preFront', 'ç', },
'x', },
= {
{ '1=χ', '', },
{ '0~preFront', 'ç', },
'x', },
= {
{ '1=χ', '', },
{ '0~preFront', 'ç', },
'x',
},
= {
{ '1=χ', '', },
{ '0~preFront', 'ç', },
'x',
},
},
}
data = {
= { },
= {
= 'ps',
= 'ps',
= 'ps',
--!!??CHECKTHIS this ks must never separate αψύς = a.psis
= 'ps',
= 'ps',
= 'ps',
},
}
data = {
= { },
= {
= 'w',
= '',
= '',
= '',
= '',
= '',
},
}
data = {
= {
{ '0~isIDiphth/0~isUDiphth/0~hasMacronBreve', 1},
0,
},
= {
= 'a',
= 'a',
= 'a',
= 'a',
= 'a',
= 'a',
},
}
data = {
= {
{ '0~isIDiphth/0~isUDiphth', 1},
0,
},
= {
= 'e',
= 'e',
= 'e',
= 'e',
= 'e',
= 'e',
},
}
data = {
= {
{ '0~isUDiphth', 1},
0,
},
= {
= 'ɛ',
= 'e̝',
= 'i',
= 'i',
= 'i',
= 'i',
},
}
data = {
= {
= 'i',
= 'i',
= 'i',
= 'i',
= 'i',
= 'i',
},
}
data = {
= {
{ '0~isIDiphth/0~isUDiphth', 1},
0,
},
= {
= 'o',
= 'o',
= 'o',
= 'o',
= 'o',
= 'o',
},
}
data = {
= {
{ '0~isIDiphth/0~hasMacronBreve', 1},
0,
},
= {
= 'y',
= 'y',
= 'y',
= 'y',
= 'i',
= 'i',
},
}
data = {
= {
= 'ɔ',
= 'o',
= 'o',
= 'o',
= 'o',
= 'o',
},
}
local categories = {
= {
= { "π", "τ", "κ", "β", "δ", "γ", "φ", "θ", "χ", "ψ", "ξ", },
= { "κ", "γ", "χ", "ξ", },
= { "β", "δ", "γ", "ζ", "μ", "ν", "λ", "ρ", "ϝ", },
= { "π", "ψ", "τ", "κ", "ξ", "φ", "θ", "χ", "σ", "ς", },
= { "φ", "θ", "χ", },
= { "ϊ", "ϋ", "ΐ", "ΰ", "ῒ", "ῢ", "ῗ", "ῧ", },
= { "ᾳ", "ῃ", "ῳ", "ᾴ", "ῄ", "ῴ", "ᾲ", "ῂ", "ῲ", "ᾷ", "ῇ", "ῷ", "ᾀ", "ᾐ", "ᾠ", "ᾄ", "ᾔ", "ᾤ", "ᾂ", "ᾒ", "ᾢ", "ᾆ", "ᾖ", "ᾦ", "ᾁ", "ᾑ", "ᾡ", "ᾅ", "ᾕ", "ᾥ", "ᾃ", "ᾓ", "ᾣ", "ᾇ", "ᾗ", "ᾧ", },
},
= {
= { "α", "ε", "η", "ι", "ο", "ω", "υ", }, -- Not currently used; if it were, it might need to include all the accented vowel characters.
= { "β", "γ", "δ", "ζ", "θ", "κ", "λ", "μ", "ν", "ξ", "π", "ρ", "σ", "ς", "τ", "φ", "χ", "ψ", },
= { "η", "ω", "ᾱ", "ῑ", "ῡ", },
= { "ε", "ο", "ᾰ", "ῐ", "ῠ", },
= { "α", "ι", "υ", },
= { diacritics.macron, diacritics.spacing_macron, diacritics.modifier_macron, diacritics.breve, diacritics.spacing_breve, diacritics.rough, diacritics.smooth, diacritics.diaeresis, diacritics.acute, diacritics.grave, diacritics.circum, diacritics.Latin_circum, diacritics.coronis, diacritics.subscript, },
},
= {
= { "ά", "έ", "ή", "ί", "ό", "ύ", "ώ", "ᾴ", "ῄ", "ῴ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ΐ", "ΰ", },
= { "ὰ", "ὲ", "ὴ", "ὶ", "ὸ", "ὺ", "ὼ", "ᾲ", "ῂ", "ῲ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ῒ", "ῢ", },
= { "ᾶ", "ῆ", "ῖ", "ῦ", "ῶ", "ᾷ", "ῇ", "ῷ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ", "ῗ", "ῧ", },
},
= {
= { "ἁ", "ἑ", "ἡ", "ἱ", "ὁ", "ὑ", "ὡ", "ᾁ", "ᾑ", "ᾡ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ", },
= { "ἀ", "ἐ", "ἠ", "ἰ", "ὀ", "ὐ", "ὠ", "ᾀ", "ᾐ", "ᾠ", "ῤ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ", },
},
}
for key1, list in pairs(categories) do
for key2, letters in pairs(list) do
if type(key1) == "number" then
for _, letter in ipairs(letters) do
if not data then
data = {}
end
data = true
end
elseif type(key1) == "string" then
for _, letter in ipairs(letters) do
if not data then
data = {}
end
data = key2
end
end
end
end
for letter in gmatch("εέὲἐἔἒἑἕἓ", ".") do
local l_data = data
l_data.p = epsilon(l_data.breath, l_data.accent)
end
for letter in gmatch("οόὸὀὄὂὁὅὃ", ".") do
local l_data = data
l_data.p = omicron(l_data.breath, l_data.accent)
end
for letter in gmatch("ηῃήῄὴῂῆῇἠᾐἤᾔἢᾒἦᾖἡᾑἥᾕἣᾓἧᾗ", ".") do
local l_data = data
l_data.p = eta(l_data.breath, l_data.accent, l_data.subi)
end
for letter in gmatch("ωῳώῴὼῲῶῷὠᾠὤᾤὢᾢὦᾦὡᾡὥᾥὣᾣὧᾧ", ".") do
local l_data = data
l_data.p = omega(l_data.breath, l_data.accent, l_data.subi)
end
for letter in gmatch("αᾳάᾴὰᾲᾶᾷἀᾀἄᾄἂᾂἆᾆἁᾁἅᾅἃᾃἇᾇ", ".") do
local l_data = data
l_data.p = alpha(l_data.breath, l_data.accent, l_data.subi)
if not l_data.subi and l_data.accent ~= 'circum' then
if not l_data.pre then
l_data.pre = { { '0~hasMacronBreve', 1}, 0, }
end
data = {p = alpha(l_data.breath, l_data.accent, false, false)}
data = {p = alpha(l_data.breath, l_data.accent, false, true)}
end
end
for letter in gmatch("ιίὶῖἰἴἲἶἱἵἳἷϊΐῒῗ", ".") do
local l_data = data
l_data.p = iota(l_data.breath, l_data.accent)
if l_data.accent ~= 'circum' then
l_data.pre = { { '0~hasMacronBreve', 1}, 0, }
data = {p = iota(l_data.breath, l_data.accent, false)}
data = {p = iota(l_data.breath, l_data.accent, true)}
end
if not l_data.diar then
data = {p = ai(l_data.breath, l_data.accent)}
data = {p = ei(l_data.breath, l_data.accent)}
data = {p = oi(l_data.breath, l_data.accent)}
data = {p = ui(l_data.breath, l_data.accent)}
end
end
for letter in gmatch("υύὺῦὐὔὒὖὑὕὓὗϋΰῢῧ", ".") do
local l_data = data
l_data.p = ypsilon(l_data.breath, l_data.accent)
if l_data.accent ~= 'circum' then
if letter ~= 'υ' then l_data.pre = { { '0~hasMacronBreve', 1}, 0, } end
data = {p = ypsilon(l_data.breath, l_data.accent, false)}
data = {p = ypsilon(l_data.breath, l_data.accent, true)}
end
if not l_data.diar then
data = {p = au(l_data.breath, l_data.accent)}
data = {p = hu(l_data.breath, l_data.accent)}
data = {p = eu(l_data.breath, l_data.accent)}
data = {p = ou(l_data.breath, l_data.accent)}
end
end
data = {
= "s", -- but only for ξ ψ not for κσ (πσ... cannot find) NO BREAK (also need zm)
= 'bɡŋdzklmnprstβðɣɸθxfvɟʝcçwʍj',
= "aeiouyɛɔ",
= high .. low .. midHigh .. midLow .. highMid .. long .. aspirated .. voiceless .. nonsyllabic .. rising .. falling,
= "rln",
= "bɡdkptβðɣɸθxfv",
= "ι",
= "ιηευ",
= "ϊΐῒῗ",
= "ηω",
= "εο",
= "αιυ",
= 'αεηο', -- first members for diphthongs ending in 'υ'
= 'αεου', -- first members for diphthongs ending in 'ι'
= m_utils_data.all,
= m_utils_data.consonants
}
data.chars.frontDiphthong = data.chars.frontDiphth
return data