Module:qlu-pron: Difference between revisions
No edit summary Tag: Reverted |
No edit summary Tag: Manual revert |
||
| Line 73: | Line 73: | ||
local function syllabify(word) | local function syllabify(word) | ||
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, "·"); | ||
| Line 89: | Line 86: | ||
if #syllables == 1 then return table.concat(syllables) end -- account for monosyllables | if #syllables == 1 then return table.concat(syllables) end -- account for monosyllables | ||
for i, syllable in ipairs(syllables) do | for i, syllable in ipairs(syllables) do | ||
if match(syllable, "[ | if match(syllable, "[áéíóúý]") then -- if the user inputted manual stress, ignore all the rest | ||
table.insert(syllables, i, " | table.insert(syllables, i, "ˈ") | ||
return table.concat(syllables, "·") | |||
end | end | ||
end | end | ||