模組:Sandbox/Elmru/test

Wikipedia (chū-iû ê pek-kho-choân-su) beh kā lí kóng...

可在模組:Sandbox/Elmru/test/doc建立此模組的說明文件

local p = {}
 
function attachTone(a, n)
    n = tonumber(n)

	if a == "Oai" then
		if n == 1 then return "Oai" end
		if n == 2 then return "Oái" end
		if n == 3 then return "Oài" end
		if n == 4 then return "Oai" end
        if n == 5 then return "Oâi" end
        if n == 6 then return "Oǎi" end
        if n == 7 then return "Oāi" end
        if n == 8 then return "Oa̍i" end
		return a
	end
	
	if a == "oai" then
		if n == 1 then return "oai" end
		if n == 2 then return "oái" end
		if n == 3 then return "oài" end
		if n == 4 then return "oai" end
        if n == 5 then return "oâi" end
        if n == 6 then return "oǎi" end
        if n == 7 then return "oāi" end
        if n == 8 then return "oa̍i" end
		return a
	end
	
	if a == "Oan" then
		if n == 1 then return "Oan" end
		if n == 2 then return "Oán" end
		if n == 3 then return "Oàn" end
		if n == 4 then return "Oan" end
        if n == 5 then return "Oân" end
        if n == 6 then return "Oǎn" end
        if n == 7 then return "Oān" end
        if n == 8 then return "Oa̍n" end
		return a
	end
	
	if a == "oan" then
		if n == 1 then return "oan" end
		if n == 2 then return "oán" end
		if n == 3 then return "oàn" end
		if n == 4 then return "oan" end
        if n == 5 then return "oân" end
        if n == 6 then return "oǎn" end
        if n == 7 then return "oān" end
        if n == 8 then return "oa̍n" end
		return a
	end
	
	if a == "O" then
		if n == 1 then return "O" end
		if n == 2 then return "Ó" end
		if n == 3 then return "Ò" end
		if n == 4 then return "O" end
        if n == 5 then return "Ô" end
        if n == 6 then return "Ŏ" end
        if n == 7 then return "Ō" end
        if n == 8 then return "O̍" end
		return a
	end
 
	if a == "o" then
		if n == 1 then return "o" end
		if n == 2 then return "ó" end
		if n == 3 then return "ò" end
		if n == 4 then return "o" end
        if n == 5 then return "ô" end
        if n == 6 then return "ǒ" end
        if n == 7 then return "ō" end
        if n == 8 then return "o̍" end
		return a
	end
	
	if a == "E" then
		if n == 1 then return "E" end
		if n == 2 then return "É" end
		if n == 3 then return "È" end
		if n == 4 then return "E" end
        if n == 5 then return "Ê" end
        if n == 6 then return "Ě" end
        if n == 7 then return "Ē" end
        if n == 8 then return "E̍" end
		return a
	end
 
	if a == "e" then
		if n == 1 then return "e" end
		if n == 2 then return "é" end
		if n == 3 then return "è" end
		if n == 4 then return "e" end
        if n == 5 then return "ê" end
        if n == 6 then return "ě" end
        if n == 7 then return "ē" end
        if n == 8 then return "e̍" end
		return a
	end
	
    if a == "A" then
		if n == 1 then return "A" end
		if n == 2 then return "Á" end
		if n == 3 then return "À" end
		if n == 4 then return "A" end
        if n == 5 then return "Â" end
        if n == 6 then return "Ǎ" end
        if n == 7 then return "Ā" end
        if n == 8 then return "A̍" end
		return a
	end
    if a == "a" then
		if n == 1 then return "a" end
		if n == 2 then return "á" end
		if n == 3 then return "à" end
		if n == 4 then return "a" end
        if n == 5 then return "â" end
        if n == 6 then return "ǎ" end
        if n == 7 then return "ā" end
        if n == 8 then return "a̍" end
		return a
	end

    if a == "U" then
		if n == 1 then return "U" end
		if n == 2 then return "Ú" end
		if n == 3 then return "Ù" end
		if n == 4 then return "U" end
        if n == 5 then return "Û" end
        if n == 6 then return "Ǔ" end
        if n == 7 then return "Ū" end
        if n == 8 then return "U̍" end
		return a
	end

    if a == "u" then
		if n == 1 then return "u" end
		if n == 2 then return "ú" end
		if n == 3 then return "ù" end
		if n == 4 then return "u" end
        if n == 5 then return "û" end
        if n == 6 then return "ǔ" end
        if n == 7 then return "ū" end
        if n == 8 then return "u̍" end
		return a
	end
 
    if a == "I" then
		if n == 1 then return "I" end
		if n == 2 then return "Í" end
		if n == 3 then return "Ì" end
		if n == 4 then return "I" end
        if n == 5 then return "Î" end
        if n == 6 then return "Ǐ" end
        if n == 7 then return "Ī" end
        if n == 8 then return "I̍" end
		return a
	end
    
	if a == "i" then
		if n == 1 then return "i" end
		if n == 2 then return "í" end
		if n == 3 then return "ì" end
		if n == 4 then return "i" end
        if n == 5 then return "î" end
        if n == 6 then return "ǐ" end
        if n == 7 then return "ī" end
        if n == 8 then return "i̍" end
		return a
	end
	
	if a == "Ng" then
		if n == 1 then return "Ng" end
		if n == 2 then return "Ńg" end
		if n == 3 then return "Ǹg" end
		if n == 4 then return "Ng" end
        if n == 5 then return "N̂g" end
        if n == 6 then return "Ňg" end
        if n == 7 then return "N̄g" end
        if n == 8 then return "N̍g" end
		return a
	end
	
	if a == "ng" then
		if n == 1 then return "ng" end
		if n == 2 then return "ńg" end
		if n == 3 then return "ǹg" end
		if n == 4 then return "ng" end
        if n == 5 then return "n̂g" end
        if n == 6 then return "ňg" end
        if n == 7 then return "n̄g" end
        if n == 8 then return "n̍g" end
		return a
	end

    if a == "M" then
		if n == 1 then return "M" end
		if n == 2 then return "Ḿ" end
		if n == 3 then return "M̀" end
		if n == 4 then return "M" end
        if n == 5 then return "M̂" end
        if n == 6 then return "M̌" end
        if n == 7 then return "M̄" end
        if n == 8 then return "M̍" end
		return a
	end
	
	if a == "m" then
		if n == 1 then return "m" end
		if n == 2 then return "ḿ" end
		if n == 3 then return "m̀" end
		if n == 4 then return "m" end
        if n == 5 then return "m̂" end
        if n == 6 then return "m̌" end
        if n == 7 then return "m̄" end
        if n == 8 then return "m̍" end
		return a
	end
    
    if a == "Oo" then
		if n == 1 then return "O͘" end
		if n == 2 then return "Ó͘" end
		if n == 3 then return "Ò͘" end
		if n == 4 then return "O͘" end
        if n == 5 then return "Ô͘" end
        if n == 6 then return "Ŏ͘" end
        if n == 7 then return "Ō͘" end
        if n == 8 then return "O̍͘" end
        return a
	end
    
    if a == "oo" then
		if n == 1 then return "o͘" end
		if n == 2 then return "ó͘" end
		if n == 3 then return "ò͘" end
		if n == 4 then return "o͘" end
        if n == 5 then return "ô͘" end
        if n == 6 then return "ǒ͘" end
        if n == 7 then return "ō͘" end
        if n == 8 then return "o̍͘" end
		return a
	end

	return a
 
end

function selectVowel(chara, n)
 
	if not chara then
		return
	end
    
  -- Tone-attaching order: oai, oan, o, e, a, u, i, ng, m.
  -- Output will change by the order below.
    if chara:find('Oai') then
		return chara:gsub("Oai", attachTone("Oai", n))
	end
    if chara:find('oai') then
		return chara:gsub("oai", attachTone("oai", n))
	end
	if chara:find('Oan') then
		return chara:gsub("Oan", attachTone("Oan", n))
	end
    if chara:find('oan') then
		return chara:gsub("oan", attachTone("oan", n))
	end
    if chara:find('Oo') then
		return chara:gsub("Oo", attachTone("Oo", n))
	end
    if chara:find('oo') then
		return chara:gsub("oo", attachTone("oo", n))
	end
    if chara:find('O') then
		return chara:gsub("O", attachTone("O", n))
	end
    if chara:find('o') then
		return chara:gsub("o", attachTone("o", n))
	end
	if chara:find('E') then
		return chara:gsub("E", attachTone("E", n))
	end
	if chara:find('e') then
		return chara:gsub("e", attachTone("e", n))
	end
	if chara:find('A') then
		return chara:gsub("A", attachTone("A", n))
	end
	if chara:find('a') then
		return chara:gsub("a", attachTone("a", n))
	end
	if chara:find('U') then
		return chara:gsub("U", attachTone("U", n))
	end
    if chara:find('u') then
		return chara:gsub("u", attachTone("u", n))
    end
    if chara:find('I') then
		return chara:gsub("I", attachTone("I", n))
	end
	if chara:find('i') then
		return chara:gsub("i", attachTone("i", n))
	end
	if chara:find('Ng') then
		return chara:gsub("Ng", attachTone("Ng", n))
    end
    if chara:find('ng') then
		return chara:gsub("ng", attachTone("ng", n))
    end
    if chara:find('M') then
		return chara:gsub("M", attachTone("M", n))
    end
    if chara:find('m') then
		return chara:gsub("m", attachTone("m", n))
    end
	
end
 
function p.pehoeji(frame)
	local input = frame.args[1]
	if not input then
		return
	end
	local out = input:gsub("([%a]+)(%d)", selectVowel):gsub("nn", "ⁿ")
	return (out)
end
 
return p