2,788
edits
No edit summary |
No edit summary |
||
Line 13: | Line 13: | ||
local mutation_rules = { | local mutation_rules = { | ||
["b"] = {" | ["b"] = {"v", "mb"}, | ||
[" | ["v"] = {nil, "mv"}, | ||
[" | ["k"] = {"h", "nk"}, | ||
[" | ["h"] = {"r̦", "nh"}, | ||
["d"] = {"d̦", "nd"}, | ["d"] = {"d̦", "nd"}, | ||
["d̦"] = {"d̦", "nd̦"}, | ["d̦"] = {"d̦", "nd̦"}, | ||
[" | ["ð"] = {nil, "nð"}, | ||
["f"] = {nil, "mf"}, | ["f"] = {nil, "mf"}, | ||
["g"] = {" | ["g"] = {"r̦", "ng"}, | ||
[" | ["r̦"] = {nil, "nr̦"}, | ||
["l"] = {nil, "nl"}, | ["l"] = {nil, "nl"}, | ||
[" | ["hl"] = {"l", "nl"}, | ||
["m"] = {}, | ["m"] = {}, | ||
["n"] = {}, | ["n"] = {}, | ||
["p"] = {"b", "mp"}, | ["p"] = {"b", "mp"}, | ||
["r"] = {nil, "dr"}, | ["r"] = {nil, "dr"}, | ||
[" | ["hr"] = {"r", "dr"}, | ||
["s"] = {"ș", "ns"}, | ["s"] = {"ș", "ns"}, | ||
["ș"] = {"ș", "nș"}, | ["ș"] = {"ș", "nș"}, | ||
["t"] = {"ț", "nt"}, | ["t"] = {"ț", "nt"}, | ||
["ț"] = {"ț", "nț"}, | ["ț"] = {"ț", "nț"}, | ||
} | } | ||
local vowel_pattern = "[ | local vowel_pattern = "[aáeiíouú]" | ||
local | local gh_to_v_vowel_pattern = "[eiíuú]" | ||
local function get_radical_data(term) | local function get_radical_data(term) | ||
local initial, prevowel, remainder | local initial, prevowel, remainder | ||
initial = mw.ustring.sub(term, 1, 1) | |||
if initial == "h" then | |||
local next_initial = mw.ustring.sub(term, 2, 2) | |||
if next_initial == "r" or next_initial == "l" then | |||
initial = initial .. next_initial | |||
prevowel = mw.ustring.find(mw.ustring.sub(term, 3, 3), vowel_pattern) | |||
remainder = mw.ustring.sub(term, 3) | |||
return initial, false, prevowel, remainder | |||
end | |||
end | end | ||
prevowel = mw.ustring.find(mw.ustring.sub(term, 2, 2), vowel_pattern) | |||
remainder = mw.ustring.sub(term, 2) | |||
local vowel = mw.ustring.find(initial, vowel_pattern) and true or false | local vowel = mw.ustring.find(initial, vowel_pattern) and true or false | ||
return initial, vowel, prevowel, remainder | return initial, vowel, prevowel, remainder | ||
Line 62: | Line 64: | ||
if change then | if change then | ||
local r_initial = mw.ustring.sub(data.remainder, 1, 1) | local r_initial = mw.ustring.sub(data.remainder, 1, 1) | ||
if change == " | if change == "r̦" and mw.ustring.find(r_initial, gh_to_v_vowel_pattern) then | ||
change = " | change = "v" | ||
end | end | ||
return change .. data.remainder | return change .. data.remainder |