Module:ssy-IPA
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local m_IPA = require("Module:IPA")
local lang = require("Module:languages").getByCode("ssy")
local s = mw.ustring.gsub
local title = mw.title.getCurrentTitle().text
local C = "[bcdfghjklmnpqrstwxyzʃçɖɽɲħ-]"
local V = "[aeiouäëïöü]"
local M = "[ʼʷ]"
local c = {
{"ch", "çʼ"}, {"dh", "ɖ" }, {"gn", "ɲ" },
{"x", "ħ" }, {"kh", "x" }, {"qh", "xʼ" },
{"rh", "ɽ"}, {"sh", "ʃ"}, {"th", "tʼ" },
{"ts", "sʼ" }, {"q", "kʼ" }, {"kw", "kʷ" },
{"(" .. C .. "?)(" .. M .. "?)ä", "ˈ%1%2a"},
{"(" .. C .. "?)(" .. M .. "?)ë", "ˈ%1%2e"},
{"(" .. C .. "?)(" .. M .. "?)ï", "ˈ%1%2i"},
{"(" .. C .. "?)(" .. M .. "?)ö", "ˈ%1%2o"},
{"(" .. C .. "?)(" .. M .. "?)ü", "ˈ%1%2u"},
{"(.)%1", "%1ː"},
{"c", "ʕ"}, {"ç", "t͡ʃ" },
{"g", "ɡ"}, {"j", "d͡ʒ"},
{"c", "ʕ"}, {"y", "j"},
{"-(" .. V .. ")", "ʔ%1"},
{"-", "" },
}
function export.pronunciation_phonemic(word)
word = mw.ustring.lower(word)
for a = 1, #c do
word = s(word, c[a][1], c[a][2])
end
return word
end
function export.syllabify(term) --split for hyphenation
local H, i = {}, 0
for a in string.gmatch(s(term, "([aeiou]" .. C .. "?)(" .. C .. ")%f[aeiou]", "%1.%2"), "[^%.-/]+") do
i = i+1
H[i] = a
end
return H
end
function export.show(frame)
local args = frame:getParent().args
local p, results, results_SA = {}, {}, {}
if not args[1] or (args[1] == "") then
error("Please put the word as the first positional parameter!")
else
for index, item in ipairs(args) do
table.insert(p, (item ~= "") and item or nil)
end
end
for _, word in ipairs(p) do
word = export.pronunciation_phonemic(word)
table.insert(results, {pron = "/" .. word .. "/"})
end
local H = ""
if mw.ustring.match(title, "^[^%-].+[^%-]$") then
H = export.syllabify(title)
H = "\n* " .. require("Module:hyphenation").format_hyphenations { lang = lang, hyphs = {{hyph = H}} }
end
return "* " .. m_IPA.format_IPA_full { lang = lang, items = results } .. H
end
return export