Модуль:syllables
Көрүнүш
Сыноо иштери
[түзөтүү]{{#invoke:syllables|countVowels|/ɛː.e.lí.o͜i.o/}} {{#invoke:syllables|countVowels|/ˈhaɪweɪ/}} {{#invoke:syllables|countVowels|/ˈloʊɚ/}} {{#invoke:syllables|countVowels|/ænˈdreɪə/}} {{#invoke:syllables|countVowels|/ˈbaɪəʊ/}} {{#invoke:syllables|countVowels|/ˈɑːmiɑi̯sˌmɑjoi̯tus/}} {{#invoke:syllables|countVowels|/vr̩x/}} {{#invoke:syllables|countVowels|/vl̩k/}} {{#invoke:syllables|countVowels|/ˈvr̩ːba/}} {{#invoke:syllables|countVowels|/ˈɛi̯ərə(n)/}} {{#invoke:syllables|countVowels|/ˈleːu̯ə(n)/}}
- "/ɛː.e.lí.o͜i.o/" тексти 6 үндүү, 0 үн тизмеги жана 5 үндүү же үндүү тыбыштарды жана дифтонгдорду камтыйт.
- "/ˈhaɪweɪ/" текстинде 4 үндүү, 0 үн тизмеги жана 4 үндүү же үндүү жана дифтонг бар.
- "/ˈloʊɚ/" текстинде 3 үндүү, 0 үн тизмеги жана 3 үндүү же үндүү тыбыштар жана дифтонгдор бар.
- "/ænˈdreɪə/" текстинде 4 үндүү, 0 үн тизмеги жана 4 үндүү же үндүү жана дифтонг бар.
- "/ˈbaɪəʊ/" текстинде 4 үндүү, 0 үн тизмеги жана 4 үндүү же үндүү жана дифтонг бар.
- "/ˈɑːmiɑi̯sˌmɑjoi̯tus/" тексти 8 үндүү, 0 үн тизмеги жана 6 үндүү же үндүү тыбыштарды жана дифтонгдорду камтыйт.
- "/vr̩x/" текстинде 0 үндүү, 0 үн тизмеги жана 0 үндүү тыбыштар же үндүү тыбыштар жана дифтонгдор бар.
- "/vl̩k/" текстинде 0 үндүү, 0 үн тизмеги жана 0 үндүү же үндүү тыбыштар жана дифтонгдор бар.
- "/ˈvr̩ːba/" тексти 1 үндүү, 0 үн тизмеги жана 1 үндүү же үндүү тыбыштарды жана дифтонгдорду камтыйт.
- "/ˈɛi̯ərə(n)/" текстинде 4 үндүү, 0 үн тизмеги жана 3 үндүү же үндүү жана дифтонг бар.
- "/ˈleːu̯ə(n)/" тексти 3 үндүү, 0 үн тизмеги жана 2 үндүү тыбыштарды же үндүүлөрдү жана дифтонгдорду камтыйт.
{{#invoke:syllables|countVowelsDiphthongs|en|/ˈhaɪweɪ/}} {{#invoke:syllables|countVowelsDiphthongs|en|/ˈloʊɚ/}} {{#invoke:syllables|countVowelsDiphthongs|en|/aɪˈdiə/}} {{#invoke:syllables|countVowelsDiphthongs|en|/ænˈdreɪə/}} {{#invoke:syllables|countVowelsDiphthongs|en|/ˈbaɪəʊ/}} {{#invoke:syllables|countVowelsDiphthongs|fi|/ˈɑːmiɑi̯sˌmɑjoi̯tus/}} {{#invoke:syllables|countVowelsDiphthongs|sk|/vr̩x/}} {{#invoke:syllables|countVowelsDiphthongs|sk|/vl̩k/}} {{#invoke:syllables|countVowelsDiphthongs|sk|/ˈvr̩ːba/}} {{#invoke:syllables|countVowelsDiphthongs|nl|/ˈɛi̯ərə(n)/}} {{#invoke:syllables|countVowelsDiphthongs|nl|/ˈleːu̯ə(n)/}}
- "/ˈhaɪweɪ/" текстинде 2 үндүү же дифтонг бар.
- "/ˈloʊɚ/" текстинде 2 үндүү же дифтонг бар.
- "/aɪˈdiə/" текстинде 2 үндүү же дифтонг бар. – /iə/ GA-да диссиллабикалык ырааттуулук, ал эми NZде дифтонг; тилекке каршы, диалект үчүн тил коду жок.
- "/ænˈdreɪə/" текстинде 2 үндүү же дифтонг бар.
- "/ˈbaɪəʊ/" текстинде 0 үндүү же дифтонг бар.
- "/ˈɑːmiɑi̯sˌmɑjoi̯tus/" текстинде 8 үндүү же дифтонг бар.
- "/vr̩x/" текстинде 0 үндүү же дифтонг бар.
- "/vl̩k/" текстинде 0 үндүү же дифтонг бар.
- "/ˈvr̩ːba/" текстинде 1 үндүү же дифтонг бар.
- "/ˈɛi̯ərə(n)/" текстинде 4 үндүү же дифтонг бар.
- "/ˈleːu̯ə(n)/" текстинде 3 үндүү же дифтонг бар.
{{#invoke:syllables|countVowels2Test|en|/ˈhaɪweɪ/}} {{#invoke:syllables|countVowels2Test|en|/ˈloʊɚ/}} {{#invoke:syllables|countVowels2Test|en|/aɪˈdiə/}} {{#invoke:syllables|countVowels2Test|en|/ænˈdreɪə/}} {{#invoke:syllables|countVowels2Test|en|/ˈbaɪəʊ/}} {{#invoke:syllables|countVowels2Test|en|/avə(ʊ)ˈkeɪʃən/}} {{#invoke:syllables|countVowels2Test|en|/ˈflaʊə/}} {{#invoke:syllables|countVowels2Test|en|/ˈfaɪ̯ə/}} {{#invoke:syllables|countVowels2Test|fi|/ˈɑːmiɑi̯sˌmɑjoi̯tus/}} {{#invoke:syllables|countVowels2Test|sk|/vr̩x/}} {{#invoke:syllables|countVowels2Test|sk|/vl̩k/}} {{#invoke:syllables|countVowels2Test|sk|/ˈvr̩ːba/}} {{#invoke:syllables|countVowels2Test|nl|/ˈɛi̯ərə(n)/}} {{#invoke:syllables|countVowels2Test|nl|/ˈleːu̯ə(n)/}}
- "/ˈhaɪweɪ/" текстинде 2 үндүү тыбыш бар.
- "/ˈloʊɚ/" текстинде 2 үндүү тыбыш бар.
- "/aɪˈdiə/" текстинде 2 үндүү тыбыш бар. – /iə/ GA-да диссиллабикалык ырааттуулук, ал эми NZде дифтонг; тилекке каршы, диалект үчүн тил коду жок.
- "/ænˈdreɪə/" текстинде 3 үндүү тыбыш бар.
- "/ˈbaɪəʊ/" текстинде 2 үндүү тыбыш бар.
- "/avə(ʊ)ˈkeɪʃən/" текстинде 4 үндүү тыбыш бар.
- "/ˈflaʊə/" текстинде 2 үндүү тыбыш бар.
- "/ˈfaɪ̯ə/" текстинде 2 үндүү тыбыш бар.
- "/ˈɑːmiɑi̯sˌmɑjoi̯tus/" текстинде 6 үндүү тыбыш бар.
- "/vr̩x/" текстинде 1 үндүү тыбыш бар.
- "/vl̩k/" текстинде 1 үндүү тыбыш бар.
- "/ˈvr̩ːba/" текстинде 2 үндүү тыбыш бар.
- "/ˈɛi̯ərə(n)/" текстинде 3 үндүү тыбыш бар.
- "/ˈleːu̯ə(n)/" текстинде 2 үндүү тыбыш бар.
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local toNFD = mw.ustring.toNFD
local U = m_str_utils.char
local diphthongs = mw.loadData("Module:IPA/data").diphthongs
local vowels = mw.loadData("Module:IPA/data/symbols").vowels .. "ᵻ" .. "ᵿ"
--[[ Бул кызыктуу каталог болсо да, учурда бул үчүн эч кандай пайдасы жок.
Бул фонетикалык транскрипциялар үчүн колдонулушу мүмкүн.
Үндүүлөргө кошулган диакритиктер:
үстү тескери бреве, төмөндө тескери бреве,
өйдө, ылдый чап,
сол так, оң так,
диэрезис (жогоруда), диаэрис төмөндө,
оң жарым шакек, сол жарым шакек,
төмөндө плюс белгиси, төмөндө минус белгиси,
жогоруда x бириктирүү, ротикалык илмек,
тильда (жогоруда), ылдыйда тильда
лигатура галстук (кош бреваны айкалыштыруу), ылдый байлоо
]]
local diacritics = U(
0x311, 0x32F,
0x31D, 0x31E,
0x318, 0x319,
0x308, 0x324,
0x339, 0x31C,
0x31F, 0x320,
0x33D, 0x2DE,
0x303, 0x330,
0x361, 0x35C
)
--[[
combining acute and grave tone marks, circumflex
]]--
local tone = "[" .. U(0x341, 0x340, 0x302) .. "]"
local nonsyllabicDiacritics = U(0x311, 0x32F)
local syllabicDiacritics = U(0x0329, 0x030D)
local ties = U(0x361, 0x35C)
-- long, half-long, extra short
local lengthDiacritics = U(0x2D0, 0x2D1, 0x306)
local vowel = "[" .. vowels .. "]" .. tone .. "?"
local tie = "[" .. ties .. "]"
local nonsyllabicDiacritic = "[" .. nonsyllabicDiacritics .. "]"
local syllabicDiacritic = "[" .. syllabicDiacritics .. "]"
local UTF8Char = "[\1-\127\194-\244][\128-\191]*"
function export.getVowels(remainder, lang)
if string.find(remainder, "^[%[/]?%-") or string.find(remainder, "%-[%[/]?$") then
return nil
end -- If a hyphen is at the beginning or end of the transcription, do not count syllables.
local count = 0
local diphs = diphthongs[lang:getCode()] or {}
remainder = toNFD(remainder)
remainder = string.gsub(remainder, "%((.*)%)", "%1") -- Remove parentheses.
while remainder ~= "" do
-- Ignore nonsyllabic vowels
remainder = gsub(remainder, "^" .. vowel .. nonsyllabicDiacritic, "")
local m =
match(remainder, "^." .. syllabicDiacritic) or -- Syllabic consonant
match(remainder, "^" .. vowel .. tie .. vowel) -- Tie bar
-- Starts with a recognised diphthong?
for _, diph in ipairs(diphs) do
if m then
break
end
m = m or match(remainder, "^" .. diph)
end
-- If we haven't found anything yet, just match on a single vowel
m = m or match(remainder, "^" .. vowel)
if m then
-- Found a vowel, add it
count = count + 1
remainder = string.sub(remainder, #m + 1)
else
-- Found a non-vowel, skip it
remainder = string.gsub(remainder, "^" .. UTF8Char, "")
end
end
if count ~= 0 then return count end
return nil
end
function export.countVowels2Test(frame)
local params = {
[1] = {required = true},
[2] = {default = ""},
}
local args = require("Module:parameters").process(frame.args, params)
local lang = require("Module:languages").getByCode(args[1]) or require("Module:languages").err(args[1], 1)
local count = export.getVowels(args[2], lang)
return 'The text "' .. args[2] .. '" contains ' .. count .. ' vowels.'
end
local function countVowels(text)
text = toNFD(text) or error("Invalid UTF-8")
local _, count = gsub(text, vowel, "")
local _, sequenceCount = gsub(text, vowel.."+", "")
local _, nonsyllabicCount = gsub(text, vowel .. nonsyllabicDiacritic, "")
local _, tieCount = gsub(text, vowel .. tie .. vowel, "")
local diphthongCount = count - (nonsyllabicCount + tieCount)
return count, sequenceCount, diphthongCount
end
local function countDiphthongs(text, lang)
text = toNFD(text) or error("Invalid UTF-8")
local diphthongs = diphthongs[lang:getCode()] or {}
local _, count
local total = 0
if diphthongs then
for i, diphthong in pairs(diphthongs) do
_, count = gsub(text, diphthong, "")
total = total + count
end
end
return total
end
function export.countVowels(frame)
local params = {
[1] = {default = ""},
}
local args = require("Module:parameters").process(frame.args, params)
local count, sequenceCount, diphthongCount = countVowels(args[1])
local outputs = {}
table.insert(outputs, (count or 'an unknown number of') .. ' vowels')
table.insert(outputs, (sequenceCount or 'an unknown number of') .. ' vowel sequences')
table.insert(outputs, (diphthongCount or 'an unknown number of') .. ' vowels or vowels and diphthongs')
return 'The text "' .. args[1] .. '" contains ' .. mw.text.listToText(outputs) .. "."
end
function export.countVowelsDiphthongs(frame)
local params = {
[1] = {required = true},
[2] = {default = ""},
}
local args = require("Module:parameters").process(frame.args, params)
local lang = require("Module:languages").getByCode(args[1]) or require("Module:languages").err(args[1], 1)
local vowels = countVowels(args[2])
local count = vowels - countDiphthongs(args[2], lang) or 0
local out = 'The text "' .. args[2] .. '" contains ' .. (count or 'an unknown number of')
if count == 1 then
out = out .. ' vowel or diphthong.'
else
out = out .. ' vowels or diphthongs.'
end
return out
end
return export