Module:bku-translit

From Linguifex
Jump to navigation Jump to search

Documentation for this module may be created at Module:bku-translit/doc

local export = {}

local consonants = {
	['ᝃ']='k', ['ᝄ']='g', ['ᝅ']='ng',
    ['ᝆ']='t', ['ᝇ']='d', ['ᝈ']='n',
    ['ᝉ']='f', ['ᝊ']='b', ['ᝋ']='m',
    ['ᝌ']='y', ['ᝎ']='l', ['ᝏ']='w',
    ['ᝐ']='s', ['ᝑ']='h', ['ᝍ']='r',
}

local diacritics = {
	['ᝒ']='i', ['ᝓ']='u', ['᜴']='',
}

local tt = {
	-- vowels
	['ᝀ']='a', ['ᝁ']='i', ['ᝂ']='u',
	--punctuation
    ['᜶']='.', -- kulit and pamudpod
    ['᜵']=',' -- single kulit and pamudpod
}

function export.tr(text, lang, sc, override)
	if sc ~= "Buhd" then
		return nil
	end

	text = mw.ustring.gsub(text,'([ᝃ-ᝑ][᜴])'..'([ᝀ-ᝂ])','%1-%2')
	text = mw.ustring.gsub(
		text,
		'([ᝃ-ᝑ])'..
		'([ᝒᝓ᜴]?)'..
		'([ᝀ-ᝂ]?)',
		function(c, d, e)
			if d == "" and e ~= "" then
				if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e]
				else return consonants[c] .. 'a' .. tt[e] end
				elseif e ~= "" then
				return consonants[c] .. diacritics[d]  .. tt[e] .. ''
			elseif d == "" then
				return consonants[c] .. 'a'
			else
				return consonants[c] .. diacritics[d]
			end
		end)

	text = mw.ustring.gsub(text, '.', tt)

	--remove hyphen between vowels
	text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2")
	
	-- add missing consonant placeholder after vowels
	text = mw.ustring.gsub(text,"([aeiou])","%1_")
	
	text = mw.ustring.gsub(text,
		'([ᝒᝓ᜴])',
		function(c)
			return '-' .. diacritics[c]
		end)
	
	text = mw.ustring.gsub(text, "◌", "-a")
	text = mw.ustring.gsub(text, " ([,.])", "%1")
	
	return text
end

return export