Module:Test: Difference between revisions
From Allocosm
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
export = {} | export = {} | ||
function export. | function export.compress_consonants(str) | ||
str = str or '' | |||
replace = {{"ssh","ʃʃ"}, | |||
{"ddh","ðð"}, | |||
{"tth","θθ"}, | |||
{"cch","ʧʧ"}, | |||
{"sh","ʃ"}, | |||
{"dh","ð"}, | |||
{"th","θ"}, | |||
{"j","ʤ"}, | |||
{"ch","ʧ"}, | |||
{"'",""}, | |||
} | |||
for _,v in ipairs(replace) do | |||
str = mw.ustring.gsub(str,v[1],v[2]) | |||
end | |||
return str | |||
end | |||
function export.expand_consonants(str) | |||
replace = { | |||
{"s'h","sh"}, | |||
{"s'sh","sʃ"}, | |||
{"d'h","dh"}, | |||
{"d'dh","dð"}, | |||
{"t'h","th"}, | |||
{"t'th","tθ"}, | |||
{"ssh","ʃʃ"}, | |||
{"ddh","ðð"}, | |||
{"tth","θθ"}, | |||
{"cch","ʧʧ"}, | |||
{"sh","ʃ"}, | |||
{"dh","ð"}, | |||
{"th","θ"}, | |||
{"j","ʤ"}, | |||
{"ch","ʧ"}, | |||
} | |||
for _,v in ipairs(replace) do | |||
str = mw.ustring.gsub(str,v[2],v[1]) | |||
end | end | ||
return str | |||
end | |||
function export.assimilate(str) | |||
output = export.compress_consonants(str) | |||
for | if str and str ~= '' then | ||
--VvC assimilition FIXME - should not happen if v is geminate. Disabling for now. | |||
-- output = string.gsub(output,"(["..VOWELS.."])v([^"..VOWELS.."])","%1~v%2"):gsub("(.)~v",{VvC) | |||
--Nasal Assimilation | |||
output = mw.ustring.gsub(output,"m([tdszkgθðl])","n%1") | |||
output = mw.ustring.gsub(output,"n([bfv])","m%1") | |||
--General Devoicing | |||
output = mw.ustring.gsub(output,"(["..DEVOICED.."])(["..VOICED.."])","%1~%2") | |||
output = mw.ustring.gsub(output,"~(.)",DEVOICING) | |||
output = mw.ustring.gsub(output,"(["..VOICED.."])(["..DEVOICED.."])","~%1%2") | |||
output = mw.ustring.gsub(output,"~(.)",DEVOICING) | |||
--H devoicing | |||
output = mw.ustring.gsub(output,"h(["..VOICED.."])","h~%1") | |||
output = mw.ustring.gsub(output,"~(.)",H_DEVOICING) | |||
output = mw.ustring.gsub(output,"(["..VOICED.."])h","~%1h") | |||
output = mw.ustring.gsub(output,"~(.)",H_DEVOICING) | |||
output = mw.ustring.gsub(output,"hj","hʧ") | |||
--Misc | |||
output = mw.ustring.gsub(output,"qk","kk") | |||
output = mw.ustring.gsub(output,"kq","kk") | |||
output = mw.ustring.gsub(output,"ao","au") | |||
output = mw.ustring.gsub(output,"ae","ai") | |||
output = mw.ustring.gsub(output,"aw","au") | |||
output = mw.ustring.gsub(output,"ua","wa") | |||
end | end | ||
return export.expand_consonants(output) | |||
end | end | ||
return export | return export |
Revision as of 19:51, 5 March 2024
Documentation for this module may be created at Module:Test/doc
export = {}
function export.compress_consonants(str)
str = str or ''
replace = {{"ssh","ʃʃ"},
{"ddh","ðð"},
{"tth","θθ"},
{"cch","ʧʧ"},
{"sh","ʃ"},
{"dh","ð"},
{"th","θ"},
{"j","ʤ"},
{"ch","ʧ"},
{"'",""},
}
for _,v in ipairs(replace) do
str = mw.ustring.gsub(str,v[1],v[2])
end
return str
end
function export.expand_consonants(str)
replace = {
{"s'h","sh"},
{"s'sh","sʃ"},
{"d'h","dh"},
{"d'dh","dð"},
{"t'h","th"},
{"t'th","tθ"},
{"ssh","ʃʃ"},
{"ddh","ðð"},
{"tth","θθ"},
{"cch","ʧʧ"},
{"sh","ʃ"},
{"dh","ð"},
{"th","θ"},
{"j","ʤ"},
{"ch","ʧ"},
}
for _,v in ipairs(replace) do
str = mw.ustring.gsub(str,v[2],v[1])
end
return str
end
function export.assimilate(str)
output = export.compress_consonants(str)
if str and str ~= '' then
--VvC assimilition FIXME - should not happen if v is geminate. Disabling for now.
-- output = string.gsub(output,"(["..VOWELS.."])v([^"..VOWELS.."])","%1~v%2"):gsub("(.)~v",{VvC)
--Nasal Assimilation
output = mw.ustring.gsub(output,"m([tdszkgθðl])","n%1")
output = mw.ustring.gsub(output,"n([bfv])","m%1")
--General Devoicing
output = mw.ustring.gsub(output,"(["..DEVOICED.."])(["..VOICED.."])","%1~%2")
output = mw.ustring.gsub(output,"~(.)",DEVOICING)
output = mw.ustring.gsub(output,"(["..VOICED.."])(["..DEVOICED.."])","~%1%2")
output = mw.ustring.gsub(output,"~(.)",DEVOICING)
--H devoicing
output = mw.ustring.gsub(output,"h(["..VOICED.."])","h~%1")
output = mw.ustring.gsub(output,"~(.)",H_DEVOICING)
output = mw.ustring.gsub(output,"(["..VOICED.."])h","~%1h")
output = mw.ustring.gsub(output,"~(.)",H_DEVOICING)
output = mw.ustring.gsub(output,"hj","hʧ")
--Misc
output = mw.ustring.gsub(output,"qk","kk")
output = mw.ustring.gsub(output,"kq","kk")
output = mw.ustring.gsub(output,"ao","au")
output = mw.ustring.gsub(output,"ae","ai")
output = mw.ustring.gsub(output,"aw","au")
output = mw.ustring.gsub(output,"ua","wa")
end
return export.expand_consonants(output)
end
return export