Module:zm-pron: Difference between revisions

No edit summary
No edit summary
Line 21: Line 21:
local palatal = "[ʨjʎʃʒʥʤʧʦʣ]"
local palatal = "[ʨjʎʃʒʥʤʧʦʣ]"
local sonorant = "[rl]"
local sonorant = "[rl]"
local consonants = "[mnptkbdɡfvszxrljɲŋʋʎʨjʎʃʒʥʤʧʤʣʦʣ]"
local consonants = "[mnptkbdɡfvszxrljɲŋʋʎʨjʎʃʒʥʤʧʤʣʦ]"


local export = {}
local export = {}
Line 40: Line 40:
}
}


function export.crux(term)
local affricates = {
{"ʥ", "d͡ʑ"}, {"ʤ", "d͡ʒ"}, {"ʦ", "t͡s"}, {"ʨ", "t͡ɕ"}, {"ʧ", "t͡ʃ"}, {"ʣ", "d͡z"},
}
 
function export.crux(term, d)
term = mw.ustring.lower(term)
term = mw.ustring.lower(term)
for _, rule in ipairs(rules) do
for _, rule in ipairs(rules) do
term = gsub(term, rule[1], rule[2])
term = gsub(term, rule[1], rule[2])
end
if d == "c" then term = gsub(term, "ʨ", "ʧ"); term = gsub(term, "ʥ", "ʤ") end
if d == "s" then term = gsub(term, "ʨ", "ʦ"); term = gsub(term, "ʥ", "ʣ") end
for _, aff in ipairs(affricates) do
term = gsub(term, aff[1], aff[2])
end
end
Line 63: Line 74:
end
end


function line_format(pronunciation, register)
function line_format(pronunciation, dialect)
local full_pronunciations = {}
local full_pronunciations = {}
local IPA_args = {{pron = '[' .. pronunciation .. ']'}}
local IPA_args = {{pron = '[' .. pronunciation .. ']'}}
table.insert(full_pronunciations, format_IPA(IPA_args))
table.insert(full_pronunciations, format_IPA(IPA_args))
return "(''" .. table.concat(register, ", ") .. "'')" .. ' ' .. table.concat(full_pronunciations, ' or ')
return "(''" .. table.concat(dialect, ", ") .. "'')" .. ' ' .. table.concat(full_pronunciations, ' or ')
end
end


function separate_word(term)
function separate_word(term, d)
local result = {}
local result = {}
for word in gsplit(term, " ") do
for word in gsplit(term, " ") do
table.insert(result, export.crux(word))
table.insert(result, export.crux(word, d))
end
end
Line 82: Line 93:
function export.show(frame)
function export.show(frame)
local params = {
local params = {
[1] = { default = mw.title.getCurrentTitle().nsText == 'Template' and "dźelo" or mw.title.getCurrentTitle().text },
[1] = { default = mw.title.getCurrentTitle().nsText == 'Template' and "dźélo" or mw.title.getCurrentTitle().text },
}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local args = require("Module:parameters").process(frame:getParent().args, params)
Line 89: Line 100:
local ipa = "* "
local ipa = "* "
ipa = ipa .. line_format(separate_word(term), {'Standard'})
ipa = ipa .. line_format(separate_word(term), {'Standard'})
if export.crux(term, "s") ~= export.crux(term) then
ipa = ipa .. "\n* "
ipa = ipa .. line_format(separate_word(term, "s"), {'Southern'})
end
if export.crux(term, "c") ~= export.crux(term) then
ipa = ipa .. "\n* "
ipa = ipa .. line_format(separate_word(term, "c"), {'Central'})
end
return ipa
return ipa