Module:qlu-pron: Difference between revisions
No edit summary |
No edit summary |
||
| Line 70: | Line 70: | ||
local function syllabify(word) | local function syllabify(word) | ||
word = word | word = gsub(word, "2", "ˌ") | ||
word = gsub(word, "(ː)(" .. vowels .. ")", "%1·%2") | |||
word = gsub(word, "(" .. consonants .. "*)(" .. vowels .. "*)", "%1%2·") | |||
word = gsub(word, "··", "·"); word = gsub(word, "·$", ""); word = gsub(word, "^·", "") | |||
word = gsub(word, "·(" .. consonants .. ")(" .. consonants .. ")(" .. vowels .. "*)", "%1·%2%3") | |||
word = gsub(word, "·(" .. consonants .. ")$", "%1") | |||
word = gsub(word, "·(" .. consonants .. ")·", "%1·") | |||
word = gsub(word, "(" .. consonants .. ")·(" .. consonants .. ")([pbmvstdnrɾlkɡŋhxçʤʧçx])", "%1%2·%3") | |||
word = gsub(word, "a·ʊ", "aʊ·") | |||
local syllables = split(word, "·"); | local syllables = split(word, "·"); | ||
if #syllables ~= 1 then | if #syllables ~= 1 then | ||
syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] | for i, syll in ipairs(syllables) do | ||
if match(word, "´") and not match(syll, "´") then | |||
break | |||
elseif match(syll, "´") then | |||
syll = syll:gsub("´","ˈ") | |||
return table.concat(syllables, "·") | |||
elseif match(syll, "ː") then | |||
table.insert(syllables, i, "ˈ") | |||
return table.concat(syllables, "·") | |||
elseif match(word, "ŋ$") or match(syllables[#syllables], "[aeiouɛɪɔʊ][aeiouɛɪɔʊj]") then | |||
table.insert(syllables, #syllables, "ˈ") | |||
return table.concat(syllables, "·") | |||
--[[else | |||
table.insert(syllables, #syllables-1, "ˈ") | |||
return ret]] | |||
end | |||
end | |||
local ret = table.concat(syllables, "·"); | |||
if not match(ret, "ˈ") then | |||
syllables = split(ret, "·") | |||
syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] | |||
ret = table.concat(syllables, "·") | |||
end | |||
end | end | ||