• The account request system seems to be hiding some requests. Join the Linguifex Discord server for support if you haven't been granted access after more than 24 hours. Be sure to check your spam folder! • The request form is only for screening out spambots. No need to share private info, just some conlanging experience to prove you're not a bot! • Donations for Linguifex upkeep can be given at Liberapay. Thank you! |
Module:siwa-noun/common
Jump to navigation
Jump to search
- The following documentation is located at Module:siwa-noun/common/doc.[edit]
- Useful links: root page • root page's subpages • links • transclusions • testcases • sandbox
local gsub = mw.ustring.gsub
local export = {}
function export.lenition(word)
--local word = frame:getParent().args[1] -- for testing
local lenited = ""
local v = "([aeiouyůõảẻỉỏủỷę·])"
local lenition_patterns = {
--geminated voiced stops
["bb"] = "b", ["dd"] = "d", ["gg"] = "g", ["ġġ"] = "ġ",
--long sonorants
["gį"] = "į", ["mm"] = "m", ["ll"] = "l", ["nn"] = "n", ["rr"] = "r",
--uvular stops
["bġ"] = "p", ["pr"] = "p", ["dġ"] = "t", ["tr"] = "t",
--glottalized stops
["bm"] = "m", ["dn"] = "n", ["kn"] = "ng",
--consonant clusters
["dl"] = "l", ["([lr])pp"] = "%1p", ["([lr])tt"] = "%1t", ["([lrms])kk"] = "%1k",["ps"] = "bs", ["k([lvs])"] = "g%1",
--voiced consonants (▫, arbitrary character to compute diphthongs further down)
["vv"] = "ų", [v.."[vųbhḥgd]"..v] = "%1▫%2", ["d([aou])"] = "l%1", ["(.)[dġ]([ieůy])"] = "%1▫%2", ["ġ([aou])"] = "vv%1", ["ġo̊"] = "vvo̊",
--Ci#
["ri"] = "ṡi", ["nįi"] = "gįi", ["hhį"] = "ṡ",
--long voiceless consonants
["ḍb"] = "p", ["ḍḍ"] = "hh", ["ḍg"] = "k",
--semi-vowels
["[ou]ų"] = "ů▫", ["ių"] = "y▫", ["[óú]ų"] = "ẻu▫", ["íų"] = "ỷ▫",
}
for regex, repl in pairs(lenition_patterns) do
if word:match("·.*·") then
lenited = gsub(word, "·" .. regex .. "·", repl, 1)
else
lenited = gsub(word, regex, repl, 1)
end
if lenited ~= word then return lenited end
end
return word
end
function export.coalescence(word, stress)
local diphthongs = {
["[aę]▫[aę]"] = "ả", ["e▫e"] = "ẻ", ["i▫i"] = "ỉ", ["u▫[yuů]"] = "ủ", ["[yů]▫u"] = "ủ",
["a▫e"] = "ai", ["a▫o"] = "au", ["ę▫[uů]"] = "ay",
["ę▫[ei]"] = "ei", ["ę▫o"] = "eu",
["e▫[aę]"] = "ia", ["e▫o"] = "io", ["i▫y"] = "iů",
["[uo]▫e"] = "oi", ["o▫ů"] = "ou",
["[yů]▫o"] = "uo", ["o▫o"] = "ỏ",
["y▫y"] = "ỷ", ["ů▫ů"] = "ẻu",
["ẻu▫i"] = "ůbi",
["([ae])▫ů"] = "%1y", ["([iou])▫ę"] = "%1a",
["[yů]▫[aę]"] = "ůa", ["[yů]▫[ei]"] = "ůi", -- to screen out stressed vs. unstressed
}
local triphthongs = { -- unused, can't get it to work
["([aoe])i([aoue])"] = "%1į%2", ["([aoe])ii"] = "%1gįi", ["([aoe])ỉ"] = "%1gįi",
["ai[yů]"] = "ey", ["([eo])i[yů]"] = "%1įů",
["u[ie]([aoue])"] = "uį%1", ["u[ie]i"] = "ugįi", ["uỉ"] = "ugįi", ["[uů][ie][yů]"] = "ůgįů",
["ie([aouy])"] = "igį%1", ["ieů"] = "igįy", ["iee"] = "iẻ",
["ůi([aoe])"] = "ůį%1", ["ůii"] = "ůgįi", ["ůỉ"] = "ůgįi", ["ůiu"] = "ůgįů",
["ay([ae])"] = "ęm%1", ["ay([oiů])"] = "ęb%1", ["ay[uy]"] = "ębů",
["uo([aue])"] = "um%1", ["uo([oi])"] = "ub%1", ["uo[yů]"] = "ůbů",
["au([aue])"] = "am%1", ["au([oi])"] = "ab%1", ["au[yů]"] = "amů",
["o[ua]([aue])"] = "om%1", ["o[ua]([oi])"] = "ob%1", ["o[ua][yů]"] = "omů",
["[eẻ][uy]([ae])"] = "ům%1", ["[eẻ][uy]([oi])"] = "ůb%1", ["[eẻ][ua][yůu]"] = "ůbů",
["iu([ae])"] = "ivv%1", ["iu([oui])"] = "ib%1", ["iu[yů]"] = "ivvů",
["ả([aoue])"] = "ęį%1", ["ải"] = "ęgįi", ["[ảẻ][yů]"] = "ey",
["ỏ([aue])"] = "om%1", ["([ỏỷ])([oi])"] = "%1b%2", ["ỏ[yů]"] = "omů",
["([ủỷ])([ae])"] = "%1m%2", ["ủ([oui])"] = "ub%1", ["ủ[yů]"] = "ůbů",
["([ẻỉ])([aou])"] = "%1vv%2", ["ẻ([ie])"] = "egį%1",
["ỉi"] = "iddįi", ["ỷ[yů]"] = "yby",
}
for regex, repl in pairs(diphthongs) do
word = gsub(word, regex, repl)
end
if stress then
word = gsub(word, "ů[aęei]", "ỷ")
end
word = gsub(word, "▫", "")
return word
end
export.stressed_vowels = {
["a"] = "a", ["ả"] = "a", ["au"] = "a", ["ai"] = "a", ["oa"] = "a",
["e"] = "e", ["ẻ"] = "e", ["ę"] = "e", ["ei"] = "e", ["ay"] = "e", ["eu"] = "e",
["i"] = "i", ["ỉ"] = "i", ["ia"] = "i", ["ie"] = "i", ["io"] = "i", ["iu"] = "i",
["o"] = "o", ["ỏ"] = "o", ["õ"] = "o", ["õu"] = "o", ["oi"] = "o", ["ou"] = "o",
["u"] = "u", ["ủ"] = "u", ["uo"] = "u", ["ui"] = "u",
["y"] = "y", ["ỷ"] = "y", ["ů"] = "y", ["ẻu"] = "y", ["ey"] = "y", ["ůa"] = "y", ["ůi"] = "y",
}
export.digraphs_to_single = {
["ts"] = "ʦ", ["tṡ"] = "ʨ", ["dį"] = "ʥ", ["ng"] = "ŋ", ["nį"] = "ɲ",
["kį"] = "c", ["gį"] = "ɟ", ["hh"] = "ħ", ["ḍḍ"] = "ð", ["dl"] = "ɬ", ["o̊"] = "ȯ",
["õu"] = "ở", ["ẻu"] = "ử",
}
return export