模組:POJ
跳至導覽
跳至搜尋
可在模組:POJ/doc建立此模組的說明文件
-- Pún bô͘-cho͘ kā it-poaⁿ Lô-má-jī kap sò͘-jī pian-e̍k chò Tâi-oân-ōe Pe̍h-ōe-jī.
-- Lē: Peh8-oe7-ji7--> Pe̍h-ōe-jī
-- Chhiáⁿ sú-iōng {{Pang-bô͘:POJ}} lâi kek-oa̍h chia ê kong-lêng.
local p = {}
-- Kā siaⁿ-tiāu sò͘-jī choán-oāⁿ chò piàn-im hû-hō.
-- Ho͘ selectVowel() ho͘-kiò.
function attachTone(a, n)
n = tonumber(n)
if a == "O" then
local upperO = {"O", "Ó", "Ò", "O", "Ô", "Ǒ", "Ō", "O̍"}
if (n>=1 and n<=8) then return upperO[n] end
return a
end
if a == "o" then
local lowerO = {"o", "ó", "ò", "o", "ô", "ǒ", "ō", "o̍"}
if (n>=1 and n<=8) then return lowerO[n] end
return a
end
if a == "E" then
local upperE = {"E", "É", "È", "E", "Ê", "Ě", "Ē", "E̍"}
if (n>=1 and n<=8) then return upperE[n] end
return a
end
if a == "e" then
local lowerE = {"e", "é", "è", "e", "ê", "ě", "ē", "e̍"}
if (n>=1 and n<=8) then return lowerE[n] end
return a
end
if a == "A" then
local upperA = {"A", "Á", "À", "A", "Â", "Ǎ", "Ā", "A̍"}
if (n>=1 and n<=8) then return upperA[n] end
return a
end
if a == "a" then
local lowerA = {"a", "á", "à", "a", "â", "ǎ", "ā", "a̍"}
if (n>=1 and n<=8) then return lowerA[n] end
return a
end
if a == "U" then
local upperU = {"U", "Ú", "Ù", "U", "Û", "Ǔ", "Ū", "U̍"}
if (n>=1 and n<=8) then return upperU[n] end
return a
end
if a == "u" then
local lowerU = {"u", "ú", "ù", "u", "û", "ǔ", "ū", "u̍"}
if (n>=1 and n<=8) then return lowerU[n] end
return a
end
if a == "I" then
local upperI = {"I", "Í", "Ì", "I", "Î", "Ǐ", "Ī", "I̍"}
if (n>=1 and n<=8) then return upperI[n] end
return a
end
if a == "i" then
local lowerI = {"i", "í", "ì", "i", "î", "ǐ", "ī", "i̍"}
if (n>=1 and n<=8) then return lowerI[n] end
return a
end
if a == "N" then
local upperN = {"N", "Ń", "Ǹ", "N", "N̂", "Ň", "N̄", "N̍"}
if (n>=1 and n<=8) then return upperN[n] end
return a
end
if a == "n" then
local lowerN = {"n", "ń", "ǹ", "n", "n̂", "ň", "n̄", "n̍"}
if (n>=1 and n<=8) then return lowerN[n] end
return a
end
if a == "M" then
local upperM = {"M", "Ḿ", "M̀", "M", "M̂", "M̌", "M̄", "M̍"}
if (n>=1 and n<=8) then return upperM[n] end
return a
end
if a == "m" then
local lowerM = {"m", "ḿ", "m̀", "m", "m̂", "m̌", "m̄", "m̍"}
if (n>=1 and n<=8) then return lowerM[n] end
return a
end
if a == "Oo" then
local upperOo = {"O͘", "Ó͘", "Ò͘", "O͘", "Ô͘", "Ǒ͘", "Ō͘", "O̍͘"}
if (n>=1 and n<=8) then return upperOo[n] end
return a
end
if a == "oo" then
local lowerOo = {"o͘", "ó͘", "ò͘", "o͘", "ô͘", "ǒ͘", "ō͘", "o̍͘"}
if (n>=1 and n<=8) then return lowerOo[n] end
return a
end
return a
end
-- Koat-tēng tó chi̍t-ê goân-im ài thiap piàn-im hû-hō.
-- Thiap siaⁿ-tiāu ê chiàu-pâi: oa_, oe_, o, e, a, u, i, ng, m.
-- Í-hā ê chiàu-pâi nā kái-piàn, su-chhut ē bô-kâng.
function selectVowel(rplce, n)
if not rplce then return end
-- oa_
oax = {
'Oai',
'oai',
'Oan',
'oan',
'Oah', --5
'oah',
'Oak',
'oak',
'Oat',
'oat', --10
'Oap',
'oap'
}
for i=1, #oax do
if rplce:find(oax[i]) then return rplce:gsub('a', attachTone('a', n)) end
end
OAx = {
'OAI',
'OAN',
'OAH',
'OAK',
'OAT', --5
'OAP',
}
for i=1, #OAx do
if rplce:find(OAx[i]) then return rplce:gsub('A', attachTone('A', n)) end
end
-- oe_
oex = {
'Oei',
'oei',
'Oen',
'oen',
'Oeh', --5
'oeh',
'Oek',
'oek',
'Oet',
'oet', --10
'Oep',
'oep'
}
for i=1, #oex do
if rplce:find(oex[i]) then return rplce:gsub('e', attachTone('e', n)) end
end
OEx = {
'OEI',
'OEN',
'OEH',
'OEK',
'OET', --5
'OEP',
}
for i=1, #OEx do
if rplce:find(OEx[i]) then return rplce:gsub('E', attachTone('E', n)) end
end
-- o, e, a, u, i, ng, m
local oeauingm = {
'oo',
'Oo',
'OO',
'o',
'O', --5
'e',
'E',
'a',
'A',
'u', --10
'U',
'i',
'I',
'ng',
'Ng', --15
'NG',
'm',
'M'
}
local chara = {
'oo',
'Oo',
'Oo',
'o',
'O', --5
'e',
'E',
'a',
'A',
'u', --10
'U',
'i',
'I',
'n',
'N', --15
'N',
'm',
'M'
}
for i=1, #oeauingm do
if rplce:find(oeauingm[i]) then
return rplce:gsub(chara[i], attachTone(chara[i], n))
end
end
end
function p.POJ(frame)
local input = frame.args[1]
if not input then return end
local out = input:gsub("([%a]+)(%d)", selectVowel):gsub("nn", "ⁿ"):gsub("NN", "ⁿ"):gsub("oo", "o͘"):gsub("Oo", "O͘"):gsub("OO", "O͘")
return (out)
end
return p