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 20: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
