Module:sma-common
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local langdata = {
consonant = {
"^(.-)([^aeiïouyæöåAEIÏOUYÆÖÅ{}-]*)$",
},
vowel = {
"^(.-)([aeu][ae])$",
"^(.-)([iïo]e)$",
"^(.-)([yö]ö)$",
"^(.-)(å[aeå])$",
"^(.-)([aeiïouyæå]?)$",
},
vowel_variants = {
normal = { ["i"] = {"e"} , ["u"] = {"e"} },
normal3 = {["a"] = {"e"} , ["i"] = {"e"} , ["ie"] = {"e"} , ["oe"] = {"o"} , ["u"] = {"e"} },
h = { ["e"] = {""} , ["i"] = {""} , ["u"] = {""} },
j = { ["e"] = {""} , ["i"] = {""} , ["u"] = {""} },
j_I = { ["e"] = {""} , ["i"] = {""} , ["ie"] = {"", "I"} , ["u"] = {""} },
jV = { ["e"] = {"i"} , ["u"] = {"i"} },
i3 = {["a"] = {""} , ["e"] = {""} , ["ie"] = {""} , ["oe"] = {"o"} },
i3_I = {["a"] = {""} , ["e"] = {""} , ["ie"] = {"", "I"} , ["oe"] = {"o"} },
j3 = {["a"] = {"i"} , ["e"] = {"i"} , ["ie"] = {"i"} , ["oe"] = {"o"} },
j3_I = {["a"] = {"i"} , ["e"] = {"i"} , ["ie"] = {"i", "I"}, ["oe"] = {"o"} },
e = { ["ie"] = {"a", "L"}, ["oe"] = {"e", "U"} },
e3 = { ["i"] = {"e"} , ["ie"] = {"e", "L"}, ["oe"] = {"e", "U"}, ["u"] = {"e"} },
pres_1sg = { ["i"] = {"e"} , ["ie"] = {"a", "L"} , ["u"] = {"e"} },
pres_2sg = { ["e"] = {""} , ["i"] = {""} , ["ie"] = {"a", "L"} , ["u"] = {""} },
pres_3sg = {["a"] = {"oe"}, ["e"] = {"a", "L"} , ["i"] = {"ie"}, ["ie"] = {"a", "L"}, ["oe"] = {"e", "U"}, ["u"] = {"oe"}},
pres_1du_3pl = { ["e"] = {"ie", "R"}, ["i"] = {"ie"} , ["u"] = {"oe"}},
},
postprocess = function(form, vowel_effect)
-- j > i when the vowel is dropped
if form.uvowel == "" then
form.ending = form.ending:gsub("^ji?", "i")
end
if vowel_effect == "L" then
if form.svowel == "e" then
form.svowel = "a"
elseif form.svowel == "i" or form.svowel == "ï" then
form.svowel = "æ"
elseif form.svowel == "o" or form.svowel == "u" then
form.svowel = "å"
elseif form.svowel == "ae" then
form.svowel = "aa"
elseif form.svowel == "ie" or form.svowel == "ïe" then
form.svowel = "ea"
elseif form.svowel == "oe" or form.svowel == "ue" then
form.svowel = "ua"
elseif form.svowel == "åe" then
form.svowel = "åa"
end
elseif vowel_effect == "R" then
if form.svowel == "a" then
form.svowel = "e"
elseif form.svowel == "ï" then
form.svowel = "i"
elseif form.svowel == "o" then
form.svowel = "u"
elseif form.svowel == "aa" then
form.svowel = "ae"
elseif form.svowel == "ïe" then
form.svowel = "ie"
elseif form.svowel == "oe" then
form.svowel = "ue"
elseif form.svowel == "åa" then
form.svowel = "åe"
end
elseif vowel_effect == "I" then
if form.svowel == "ae" or form.svowel == "ie" then
form.svowel = "ee"
elseif form.svowel == "ue" or form.svowel == "åe" then
form.svowel = "öö"
end
elseif vowel_effect == "U" then
if form.svowel == "æ" then
form.svowel = "y"
elseif form.svowel == "a" or form.svowel == "å" then
form.svowel = "o"
elseif form.svowel == "aa" or form.svowel == "åa" then
form.svowel = "åå"
elseif form.svowel == "ea" then
form.svowel = "yö"
end
end
end,
}
export.Stem = require("Module:smi-common").make_constructor(langdata)
return export