• 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: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 36: | Line 36: | ||
function export.coalescence(word, stress) | function export.coalescence(word, stress) | ||
local diphthongs = { | --[[local diphthongs = { | ||
["[aę]▫[aę]"] = "ả", ["e▫e"] = "ẻ", ["i▫i"] = "ỉ", ["u▫[yuů]"] = "ủ", ["[yů]▫u"] = "ủ", | ["[aę]▫[aę]"] = "ả", ["e▫e"] = "ẻ", ["i▫i"] = "ỉ", ["u▫[yuů]"] = "ủ", ["[yů]▫u"] = "ủ", | ||
["a▫e"] = "ai", ["a▫o"] = "au", ["ę▫[uů]"] = "ay", | ["a▫e"] = "ai", ["a▫o"] = "au", ["ę▫[uů]"] = "ay", | ||
Line 76: | Line 76: | ||
end | end | ||
word = gsub(word, "▫", "") | word = gsub(word, "▫", "")]] | ||
--[[local c3 = word | --[[local c3 = word | ||
Revision as of 22:43, 5 August 2021
- 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ḥg]"..v] = "%1▫%2", ["d[aou]"] = "l", ["(.)[dġ]([ieůy])"] = "%1▫%2", ["(.)ġ[aou]"] = "%1vv",
--Ci#
["ri"] = "ṡi", ["nįi"] = "gįi", ["hhį"] = "ṡ",
--long voiceless consonants
["ḍb"] = "p", ["ḍḍ"] = "hh", ["ḍg"] = "k",
--semi-vowels
["[ou]ų"] = "ů",
}
for regex, repl in pairs(lenition_patterns) do
lenited = gsub(word, regex, repl, 1)
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]▫o"] = "uo",
["y▫y"] = "ỷ", ["ů▫ů"] = "ẻu",
["([ae])▫ů"] = "%1y", ["([iou])▫ę"] = "%1a",
["[yů]▫[aę]"] = "ůa", ["[yů]▫[ei]"] = "ůi", -- to screen out stressed vs. unstressed
}
local triphthongs = {
["([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, "[ůy][aęei]", "ỷ")
end
word = gsub(word, "▫", "")]]
--[[local c3 = word
for regex, repl in pairs(triphthongs) do
word = gsub(word, regex, repl)
if word ~= c3 then break end
end]]
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