Module:ábḫ-ipa: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 4: Line 4:
local word = type(frame) == "table" and frame.args[1] or frame
local word = type(frame) == "table" and frame.args[1] or frame
-- go from orthography to one-to-one  
-- go from orthography to a one-to-one phonemic map
word = string.gsub(word, "aa", "ā")
word = string.gsub(word, "áa", "â")
word = string.gsub(word, "aá", "ǎ")
word = string.gsub(word, "aai", "Ā")
word = string.gsub(word, "áai", "Â")
word = string.gsub(word, "aái", "Ǎ")
word = string.gsub(word, "ai", "A")
word = string.gsub(word, "ái", "Á")
word = string.gsub(word, "mb", "B")
word = string.gsub(word, "mb", "B")
word = string.gsub(word, "ei", "ē")
word = string.gsub(word, "éi", "ê")
word = string.gsub(word, "eí", "ě")
word = string.gsub(word, "nd", "D")
word = string.gsub(word, "nd", "D")
word = string.gsub(word, "ng", "G")
word = string.gsub(word, "ng", "G")
word = string.gsub(word, "mp", "P")
word = string.gsub(word, "ntt", "Tt")
word = string.gsub(word, "nkk", "Kk")
word = string.gsub(word, "jh", "J")
word = string.gsub(word, "ḫ", "H")
word = string.gsub(word, "ḫ", "H")
word = string.gsub(word, "ii", "ī")
word = string.gsub(word, "ii", "ī")
word = string.gsub(word, "íi", "î")
word = string.gsub(word, "íi", "î")
word = string.gsub(word, "ií", "ǐ")
word = string.gsub(word, "ií", "ǐ")
word = string.gsub(word, "ei", "ē")
word = string.gsub(word, "oi", "I")
word = string.gsub(word, "éi", "ê")
word = string.gsub(word, "ói", "Í")
word = string.gsub(word, "", "ě")
word = string.gsub(word, "jh", "J")
word = string.gsub(word, "nkk", "Kk")
word = string.gsub(word, "ou", "ō")
word = string.gsub(word, "ou", "ō")
word = string.gsub(word, "óu", "ô")
word = string.gsub(word, "óu", "ô")
word = string.gsub(word, "oú", "ǒ")
word = string.gsub(word, "oú", "ǒ")
word = string.gsub(word, "oi", "I")
word = string.gsub(word, "ói", "Í")
word = string.gsub(word, "aai", "Ā")
word = string.gsub(word, "áai", "Â")
word = string.gsub(word, "aái", "Ǎ")
word = string.gsub(word, "ai", "A")
word = string.gsub(word, "ái", "Á")
word = string.gsub(word, "aao", "Ō")
word = string.gsub(word, "aao", "Ō")
word = string.gsub(word, "áao", "Ô")
word = string.gsub(word, "áao", "Ô")
Line 34: Line 35:
word = string.gsub(word, "ao", "O")
word = string.gsub(word, "ao", "O")
word = string.gsub(word, "áo", "Ó")
word = string.gsub(word, "áo", "Ó")
word = string.gsub(word, "aa", "ā")
word = string.gsub(word, "mp", "P")
word = string.gsub(word, "áa", "â")
word = string.gsub(word, "ntt", "Tt")
word = string.gsub(word, "aá", "ǎ")
word = mw.text.split(word, "", true)
word = mw.text.split(word, "", true)
Line 93: Line 93:
for i,val in ipairs(stresses) do
for i,val in ipairs(stresses) do
syllables = syllables + 1
syllables = syllables + 1
if mw.ustring.match(val, "ˈ") then
if val == "ˈ" then
pos = i
pos = i
end
end
Line 102: Line 102:
-- mark secondary stress
-- mark secondary stress
for i,val in ipairs(stresses) do
for i,val in ipairs(stresses) do
if mw.ustring.match(val, "%.") and (i ~= syllables) then
if val == "." and (i ~= syllables) then
if (i - pos) % 2 == 0 then
if (i - pos) % 2 == 0 then
table.insert(newStresses, "ˌ")
table.insert(newStresses, "ˌ")
else
else
table.insert(newStresses, val)
table.insert(newStresses, ".")
end
end
else
else
Line 119: Line 119:
if (i == 1) and val == "." and newStresses[1] == "." then
if (i == 1) and val == "." and newStresses[1] == "." then
index = index + 1
index = index + 1
elseif mw.ustring.match(val, "[%.ˈ]") then
elseif val == "." or val == "ˈ" then
table.insert(newWord, newStresses[index])
table.insert(newWord, newStresses[index])
index = index + 1
index = index + 1
Line 130: Line 130:
newWord = {}
newWord = {}
-- allophonic rules
-- allophonic rules, i.e., from a one-to-one phonemic map to a one-to one
-- phonetic map
for i,val in ipairs(word) do
for i,val in ipairs(word) do
if val == "a" then
if val == "a" then
if word[i-1] == nil then
if word[i-1] == nil then
table.insert(newWord, "w")
table.insert(newWord, "w")
elseif word[i-1] == "ˌ" then
table.insert(newWord, "a")
elseif word[i-1] == "." then
table.insert(newWord, "w")
elseif word[i-2] == nil then
table.insert(newWord, "w")
elseif word[i-2] == "ˌ" then
table.insert(newWord, "a")
else
else
table.insert(newWord, val)
table.insert(newWord, "w")
end
end
else
else
Line 146: Line 154:
word = table.concat(newWord)
word = table.concat(newWord)
-- go from one-to-one phonemic map to IPA
-- go from one-to-one phonetic map to IPA
word = string.gsub(word, "ā", "aː")
word = string.gsub(word, "ā", "aː")
word = string.gsub(word, "â", "âː")
word = string.gsub(word, "â", "âː")