Module:ábḫ-ipa: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
function export.convert(frame) | function export.convert(frame) | ||
local word = type(frame) == "table" and frame.args[1] or frame | |||
word = string.gsub(word, "mb", "B") | |||
word = string.gsub(word, "nd", "D") | |||
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, "ii", "ī") | |||
word = string.gsub(word, "íi", "î") | |||
word = string.gsub(word, "ií", "ǐ") | |||
word = string.gsub(word, "ei", "ē") | |||
word = string.gsub(word, "éi", "ê") | |||
word = string.gsub(word, "eí", "ě") | |||
word = string.gsub(word, "ou", "ō") | |||
word = string.gsub(word, "óu", "ô") | |||
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, "áao", "Ô") | |||
word = string.gsub(word, "aáo", "Ǒ") | |||
word = string.gsub(word, "ao", "O") | |||
word = string.gsub(word, "áo", "Ó") | |||
word = string.gsub(word, "aa", "ā") | |||
word = string.gsub(word, "áa", "â") | |||
word = string.gsub(word, "aá", "ǎ") | |||
word = mw.text.split(word, "", true) | |||
result = {} | |||
for i,val in ipairs(word) do | |||
if i == 2 then | |||
if mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then | |||
table.insert(result, "ˈ") | |||
table.insert(result, val) | |||
elseif mw.ustring.match(word[i] "[mnjBDGPpTtKkbzdsJHhry]") and mw.ustring.match(word[i+1], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then | |||
table.insert(result, "ˈ") | |||
table.insert(result, val) | |||
else | |||
table.insert(result, val) | |||
end | |||
elseif mw.ustring.match(word[i-1], "[iīeēoōIaāAĀOŌíîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then | |||
if mw.ustring.match(word[i], "[iīeēoōIaāAĀOŌ]") then | |||
table.insert(result, ".") | |||
table.insert(result, val) | |||
elseif mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then | |||
table.insert(result, "ˈ") | |||
table.insert(result, val) | |||
else | |||
table.insert(result, val) | |||
end | |||
else | |||
if mw.ustring.match(word[i+1], "[iīeēoōIaāAĀOŌ]") then | |||
table.insert(result, ".") | |||
table.insert(result, val) | |||
elseif mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then | |||
table.insert(result, "ˈ") | |||
table.insert(result, val) | |||
else | |||
table.insert(result, val) | |||
end | |||
end | |||
end | |||
return table.concat(result) | |||
end | |||
function export.convertOld(frame) | |||
local word = type(frame) == "table" and frame.args[1] or frame | local word = type(frame) == "table" and frame.args[1] or frame | ||
Line 153: | Line 236: | ||
elseif val == "z" then | elseif val == "z" then | ||
table.insert(result, "θ̱") | table.insert(result, "θ̱") | ||
else | else | ||
table.insert(result, val) | table.insert(result, val) |
Revision as of 20:11, 26 February 2020
- The following documentation is located at Module:ábḫ-ipa/doc.[edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
function export.convert(frame)
local word = type(frame) == "table" and frame.args[1] or frame
word = string.gsub(word, "mb", "B")
word = string.gsub(word, "nd", "D")
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, "ii", "ī")
word = string.gsub(word, "íi", "î")
word = string.gsub(word, "ií", "ǐ")
word = string.gsub(word, "ei", "ē")
word = string.gsub(word, "éi", "ê")
word = string.gsub(word, "eí", "ě")
word = string.gsub(word, "ou", "ō")
word = string.gsub(word, "óu", "ô")
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, "áao", "Ô")
word = string.gsub(word, "aáo", "Ǒ")
word = string.gsub(word, "ao", "O")
word = string.gsub(word, "áo", "Ó")
word = string.gsub(word, "aa", "ā")
word = string.gsub(word, "áa", "â")
word = string.gsub(word, "aá", "ǎ")
word = mw.text.split(word, "", true)
result = {}
for i,val in ipairs(word) do
if i == 2 then
if mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then
table.insert(result, "ˈ")
table.insert(result, val)
elseif mw.ustring.match(word[i] "[mnjBDGPpTtKkbzdsJHhry]") and mw.ustring.match(word[i+1], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then
table.insert(result, "ˈ")
table.insert(result, val)
else
table.insert(result, val)
end
elseif mw.ustring.match(word[i-1], "[iīeēoōIaāAĀOŌíîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then
if mw.ustring.match(word[i], "[iīeēoōIaāAĀOŌ]") then
table.insert(result, ".")
table.insert(result, val)
elseif mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then
table.insert(result, "ˈ")
table.insert(result, val)
else
table.insert(result, val)
end
else
if mw.ustring.match(word[i+1], "[iīeēoōIaāAĀOŌ]") then
table.insert(result, ".")
table.insert(result, val)
elseif mw.ustring.match(word[i], "[íîǐéêěóôǒÍáâǎÁÂǍÓÔǑ]") then
table.insert(result, "ˈ")
table.insert(result, val)
else
table.insert(result, val)
end
end
end
return table.concat(result)
end
function export.convertOld(frame)
local word = type(frame) == "table" and frame.args[1] or frame
word = mw.text.split(word, "", true)
result = {}
for i,val in ipairs(word) do
if val == "a" then
if mw.ustring.match(word[i-1], "[áa]") then
table.insert(result, "ː")
elseif mw.ustring.match(word[i+1], "[á]") then
table.insert(result, "ǎ")
else
table.insert(result, "a")
end
elseif val == "á" then
if mw.ustring.match(word[i-1], "[a]") then
table.insert(result, "ː")
elseif mw.ustring.match(word[i+1], "[a]") then
table.insert(result, "â")
else
table.insert(result, "á")
end
elseif val == "b" then
if mw.ustring.match(word[i-1], "[m]") then
table.insert(result, "b")
else
table.insert(result, "β")
end
elseif val == "d" then
table.insert(result, "ð")
elseif val == "e" then
if mw.ustring.match(word[i+1], "[í]") then
table.insert(result, "ě")
else
table.insert(result, "e")
end
elseif val == "é" then
if mw.ustring.match(word[i+1], "[i]") then
table.insert(result, "ê")
else
table.insert(result, "é")
end
elseif val == "h" then
if not mw.ustring.match(word[i-1], "[j]") then
table.insert(result, "ɦ")
end
elseif val == "ḫ" then
table.insert(result, "x")
elseif val == "i" then
if mw.ustring.match(word[i-1], "[ée]") then
table.insert(result, "ːɪ̯")
elseif mw.ustring.match(word[i-1], "[aáoó]") then
table.insert(result, "ɪ̯")
elseif mw.ustring.match(word[i-1], "[ií]") then
table.insert(result, "ː")
elseif mw.ustring.match(word[i+1], "[í]") then
table.insert(result, "ǐ")
end
elseif val == "í" then
if mw.ustring.match(word[i-1], "[e]") then
table.insert(result, "ːɪ̯")
elseif mw.ustring.match(word[i+1], "i") then
table.insert(result, "î")
else
table.insert(result, "í")
end
elseif val == "j" then
if mw.ustring.match(word[i+1], "[h]") then
table.insert(result, "ʑ")
elseif i == 2 then
if mw.ustring.match(word[i+1], "[áéíó]") then
table.insert(result, "ᶮɟ̟")
elseif mw.ustring.match(word[i+1], "[iea]") and mw.ustring.match(word[i+2], "[íéá]") then
table.insert(result, "ᶮɟ̟")
elseif mw.ustring.match(word[i+1], "[o]") and mw.ustring.match(word[i+2], "[úí]") then
table.insert(result, "ᶮɟ̟")
else
table.insert(result, "ɲ̟")
end
else
if mw.ustring.match(word[i+1], "[áéíó]") then
table.insert(result, "ɲ̟ɟ̟")
elseif mw.ustring.match(word[i+1], "[iea]") and mw.ustring.match(word[i+2], "[íéá]") then
table.insert(result, "ɲ̟ɟ̟")
elseif mw.ustring.match(word[i+1], "[o]") and mw.ustring.match(word[i+2], "[úí]") then
table.insert(result, "ɲ̟ɟ̟")
else
table.insert(result, "ɲ̟")
end
end
elseif val == "k" then
if mw.ustring.match(word[i-1], "[n]") then
table.insert(result, "g")
else
table.insert(result, "k")
end
elseif val == "m" then
if i == 2 and mw.ustring.match(word[i+1], "[b]") then
table.insert(result, "ᵐ")
else
table.insert(result, "m")
end
elseif val == "n" then
if i == 2 then
if mw.ustring.match(word[i+1], "[t]") then
table.insert(result, "ⁿ")
elseif mw.ustring.match(word[i+1], "[k]") then
table.insert(result, "ᵑ")
else
table.insert(result, "n̪")
end
else
if mw.ustring.match(word[i+1], "[k]") then
table.insert(result, "ŋ")
else
table.insert(result, "n̪")
end
end
elseif val == "o" then
if mw.ustring.match(word[i-1], "[a]") then
table.insert(result, "o̯")
elseif mw.ustring.match(word[i+1], "[ú]") then
table.insert(result, "ɔ̌")
else
table.insert(result, "ɔ")
end
elseif val == "ó" then
if mw.ustring.match(word[i+1], "[u]") then
table.insert(result, "ô")
else
table.insert(result, "ɔ́")
end
elseif val == "r" then
table.insert(result, "ɺ")
elseif val == "s" then
table.insert(result, "ɕ")
elseif val == "t" then
if mw.ustring.match(word[i-1], "[n]") and not mw.ustring.match(word[i+1], "[t]") then
table.insert(result, "d̪")
else
table.insert(result, "t̪")
end
elseif val == "u" then
table.insert(result, "ːʊ̯")
elseif val == "ú" then
table.insert(result, "ːʊ̯")
elseif val == "y" then
table.insert(result, "j")
elseif val == "z" then
table.insert(result, "θ̱")
else
table.insert(result, val)
end
end
return table.concat(result)
end
return export