Module:ábḫ-ipa: Difference between revisions

Jump to navigation Jump to search
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
word = string.gsub(word, "mb", "B")
word = string.gsub(word, "mb", "B")
word = string.gsub(word, "nd", "D")
word = string.gsub(word, "nd", "D")
Line 12: Line 13:
word = string.gsub(word, "jh", "J")
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, "ei", "ē")
word = string.gsub(word, "éi", "ê")
word = string.gsub(word, "éi", "ê")
word = string.gsub(word, "eí", "ě")
word = string.gsub(word, "eí", "ě")
word = string.gsub(word, "ou", "ō")
word = string.gsub(word, "ou", "ō")
word = string.gsub(word, "óu", "ô")
word = string.gsub(word, "óu", "ô")
Line 26: Line 24:
word = string.gsub(word, "oi", "I")
word = string.gsub(word, "oi", "I")
word = string.gsub(word, "ói", "Í")
word = string.gsub(word, "ói", "Í")
word = string.gsub(word, "aai", "Ā")
word = string.gsub(word, "aai", "Ā")
word = string.gsub(word, "áai", "Â")
word = string.gsub(word, "áai", "Â")
Line 32: Line 29:
word = string.gsub(word, "ai", "A")
word = string.gsub(word, "ai", "A")
word = string.gsub(word, "ái", "Á")
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 38: Line 34:
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, "aa", "ā")
word = string.gsub(word, "áa", "â")
word = string.gsub(word, "áa", "â")
word = string.gsub(word, "aá", "ǎ")
word = string.gsub(word, "aá", "ǎ")
length = string.len(word)
word = mw.text.split(word, "", true)
word = mw.text.split(word, "", true)
Line 49: Line 42:
result = {}
result = {}
-- put in syllable boundary marks
for i,val in ipairs(word) do
for i,val in ipairs(word) do
if word[i-1] == nil then
if word[i-1] == nil then
Line 58: Line 52:
table.insert(result, val)
table.insert(result, val)
else
else
table.insert(result, ".")
table.insert(result, val)
table.insert(result, val)
end
end
Line 89: Line 84:
end
end
word = table.concat(result)
-- isolate syllable boundary marks
stresses = string.gsub(table.concat(result), "[^.ˈ]")
syllables = string.len(stresses)
stresses = mw.text.split(stresses, "", true)
-- compute position of stress
pos = 0
for i,val in word do
if mw.ustring.match(word[i], "ˈ") then
pos = i
end
end
newStresses = {}
-- mark secondary stress
for i,val in stresses do
if mw.ustring.match(word[i], ".") and i ~= syllables then
if (i - pos) % 2 == 0 then
table.insert(newStresses, "ˌ")
else
if not (i == 1 and mw.ustring.match(result[1], ".")) then
table.insert(newStresses, val)
end
end
else
table.insert(newStresses, val)
end
end
-- look through word and replace the correct .'s with ˌ's
newWord = {}
index = 1
for val in words do
if mw.ustring.match(val, "[.ˈ]") then
table.insert(newWord, newStresses[index])
index = index + 1
else
table.insert(newWord, val)
end
end
word = table.concat(newWord)
-- go from one-to-one phonemic map to IPA
word = string.gsub(word, "B", "ᵐb")
word = string.gsub(word, "B", "ᵐb")
word = string.gsub(word, "D", "ⁿd")
word = string.gsub(word, "D", "ⁿd")

Navigation menu