Module:siwa-noun/data: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(128 intermediate revisions by the same user not shown)
Line 17: Line 17:
end
end


local function csub(term)
local function csub(term, foo, bar, n)
local coalesced = term
local patterns = {
local patterns = {
{"([aoueů])iia", "%1gįa"}, {"ueia", "ugįa"}, {"ieia", "ieįa"},
{"([aoueů])", "%1gįa"}, {"ue", "ugįa"}, {"ie", "ieįa"},
{"ayia", "ębia"}, {"uoia", "ubia"}, {"auia", "abia"}, {"o[au]ia", "obia"},
{"ay", "ębia"}, {"uo", "ubia"}, {"au", "abia"}, {"o[au]", "obia"},
{"e[uy]ia", "ůbia"}, {"iuia", "ibia"}, {"ảia", "ęgįa"}, {"ỏia", "obia"},
{"e[uy]", "ůbia"}, {"iu", "ibia"}, {"", "ęgįa"}, {"", "obia"},
{"ủia", "ubia"}, {"ẻia", "egįa"}, {"ỉia", "igįa"}, {"ỷia", "ybia"}, {"ẻuia", "ůbia"}
{"", "ubia"}, {"", "egįa"}, {"", "igįa"}, {"", "ybia"}, {"ẻu", "ůbia"}
}
}
for _, pat in ipairs(patterns) do
for _, pat in ipairs(patterns) do
term = gsub(term, pat[1], pat[2])
for _, case in ipairs(ce) do
coalesced = gsub(term, pat[1] .. case .. "$", pat[2])
end
end
end
return term
return coalesced
end
end


Line 39: Line 42:
["ld"] = {type = "boolean"}, -- Lenition Declension
["ld"] = {type = "boolean"}, -- Lenition Declension
["d"] = {type = "boolean"}, -- vowel Deletion
["d"] = {type = "boolean"}, -- vowel Deletion
["d2"] = {type = "boolean"},
["s"] = {type = "boolean"}, -- Stressed
["s"] = {type = "boolean"}, -- Stressed
},
},
Line 47: Line 51:
table.insert(data.categories, "Siwa a-declension " .. data.pos)
table.insert(data.categories, "Siwa a-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if args.ld then
if args.ld then
data.forms["m"] = {(args.d and s1 or stem) .. "ka"}
data.forms["m"] = {(args.d2 and s2 or args.d and s1 or stem) .. "ka"}
loc = (args.d and s1 or stem) .. "ki"
loc = (args.d2 and s2 or args.d and s1 or stem) .. "ki"
na = true
na = true
elseif stem:match(v.."mm.$") then
elseif stem:match(v.."mm.$") then
Line 84: Line 88:
loc = s2 .. "ki"
loc = s2 .. "ki"
else
else
data.forms["m"] = {(args.d and s1 or stem) .. "ka"}
data.forms["m"] = {(args.d2 and s2 or args.d and s1 or stem) .. "ka"}
loc = (args.d and s1 or stem) .. "ki"
loc = (args.d2 and s2 or args.d and s1 or stem) .. "ki"
na = true
na = true
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 121: Line 125:
table.insert(data.categories, "Siwa e-declension " .. data.pos)
table.insert(data.categories, "Siwa e-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if stem:match("[aeẻ]$") then
if stem:match("[aeẻ]$") then
Line 182: Line 186:
data.forms["m"] = {s3 .. "mme"}
data.forms["m"] = {s3 .. "mme"}
loc = s3 .. "mmei"
loc = s3 .. "mmei"
elseif stem:match(v.."vv.$") then
data.forms["m"] = {s3 .. "vve"}
loc = s3 .. "vvei"
elseif stem:match(v.."[mpbvnrlkg].$") then
elseif stem:match(v.."[mpbvnrlkg].$") then
local stl = sub(stem, -2, -2)
local stl = sub(stem, -2, -2)
Line 217: Line 224:
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 247: Line 254:
data.forms["ine"], data.forms["all"], data.forms["abl"] = {}, {}, {}
data.forms["ine"], data.forms["all"], data.forms["abl"] = {}, {}, {}
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if args.ld then
if args.ld then
Line 268: Line 275:
na = true
na = true
end
end
elseif stem:match(v.."hh.$") then
data.forms["m"] = {s3 .. "hdi"}
loc = s3 .. "hdi"
elseif stem:match(v.."[mn][mn].$") then
elseif stem:match(v.."[mn][mn].$") then
data.forms["m"] = {s3 .. "ndi"}
data.forms["m"] = {s3 .. "ndi"}
Line 285: Line 295:
data.forms["m"] = {s2 .. "sti"}
data.forms["m"] = {s2 .. "sti"}
loc = s2 .. "sti"
loc = s2 .. "sti"
elseif stem:match(v.."ṡ.$") then
data.forms["m"] = {s2 .. "ṡti"}
loc = s2 .. "ṡti"
elseif stem:match(v.."[rhk].$") then
elseif stem:match(v.."[rhk].$") then
data.forms["m"] = {s2 .. "hdi"}
data.forms["m"] = {s2 .. "hdi"}
Line 310: Line 323:
end
end
table.insert(data.forms["ine"], csub((ine or loc) .. ce[1]))
table.insert(data.forms["ine"], (ine or loc) .. ce[1])
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. (match(stem, "[vg].$") and "ga" or ce[3])}
data.forms["ela"] = {(ela or loc) .. (match(stem, "[vg].$") and "ga" or ce[3])}
Line 316: Line 329:
table.insert(data.forms["all"], (all or loc) .. ce[5])
table.insert(data.forms["all"], (all or loc) .. ce[5])
table.insert(data.forms["abl"], (abl or loc) .. ce[6])
table.insert(data.forms["abl"], (abl or loc) .. ce[6])
end
end
Line 333: Line 347:
table.insert(data.categories, "Siwa o-declension " .. data.pos)
table.insert(data.categories, "Siwa o-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if stem:match("[ae]$") then
if stem:match("[ae]$") then
if args.ld then
if args.ld then
data.forms["m"] = {(args.d and s1 or stem) .. "mo"}
data.forms["m"] = {(args.d and s1 or stem == "kode" and "koi" or stem == "mohe" and "moi" or stem) .. "mo"}
loc = (args.d and s1 or stem) .. "moi"
loc = (args.d and s1 or stem) .. "moi"
na = true
na = true
Line 343: Line 357:
data.forms["m"] = {s3 .. "mmo"}
data.forms["m"] = {s3 .. "mmo"}
loc = s3 .. "mmoi"
loc = s3 .. "mmoi"
elseif stem:match(v.."hh.$") then
data.forms["m"] = {s3 .. "hmo"}
loc = s3 .. "hmoi"
elseif stem:match(v.."[bt].$") then
elseif stem:match(v.."[bt].$") then
data.forms["m"] = {s2 .. "bmo"}
data.forms["m"] = {s2 .. "bmo"}
Line 363: Line 380:
na = true
na = true
end
end
elseif stem:match("i$") then
elseif stem:match("[iỷ]$") then
if args.ld then
if args.ld then
data.forms["m"] = {(args.d and s1 or stem) .. "ko"}
data.forms["m"] = {(args.d and s1 or stem) .. "ko"}
Line 371: Line 388:
data.forms["m"] = {sub(stem, 1, -5) .. "ṡko"}
data.forms["m"] = {sub(stem, 1, -5) .. "ṡko"}
loc = sub(stem, 1, -5) .. "ṡkoi"
loc = sub(stem, 1, -5) .. "ṡkoi"
elseif stem:match(v.."hh.$") then
data.forms["m"] = {s3 .. "hko"}
loc = s3 .. "hkoi"
elseif stem:match(v.."[mnv][mnv].$") then
elseif stem:match(v.."[mnv][mnv].$") then
data.forms["m"] = {(sub(stem, -4, -4) == "o" and sub(stem, 1, -5) .. "õ" or s3) .. "kko"}
data.forms["m"] = {(sub(stem, -4, -4) == "o" and sub(stem, 1, -5) .. "õ" or s3) .. "kko"}
Line 394: Line 414:
na = true
na = true
end
end
elseif stem:match("[ouyů]$") then
elseif stem:match("[ouyůỏ]$") then
if args.ld then
if args.ld then
local del = args.d and s1 or stem
local del = args.d and s1 or stem
Line 401: Line 421:
ine, ade, all, abl = del .. "mi", del .. "mi", del .. "mi", del .. "mi"
ine, ade, all, abl = del .. "mi", del .. "mi", del .. "mi", del .. "mi"
na = true
na = true
elseif stem:match(v.."[bptd].$") then
elseif s1:match(v.."[bptd]$") then
data.forms["m"] = {s2 .. "bma"}
data.forms["m"] = {s2 .. "bma"}
loc = s2 .. "bmi"
loc = s2 .. "bmi"
elseif stem:match(v.."[mn][mn].$") then
elseif s1:match(v.."[mn][mn]$") then
data.forms["m"] = {s3 .. "mma"}
data.forms["m"] = {s3 .. "mma"}
loc = s3 .. "mmi"
loc = s3 .. "mmi"
elseif stem:match(v.."[mnv].$") then
elseif s1:match(v.."[rhgk][rhgk]$") then
data.forms["m"] = {s3 .. "hma"}
loc = s3 .. "hmi"
elseif s1:match(v.."[mnv]$") then
data.forms["m"] = {s2 .. "mma"}
data.forms["m"] = {s2 .. "mma"}
loc = s2 .. "mmi"
loc = s2 .. "mmi"
elseif stem:match(v.."[rhgk].$") then
elseif s1:match(v.."[rhgk]$") then
data.forms["m"] = {s2 .. "hma"}
data.forms["m"] = {s2 .. "hma"}
loc = s2 .. "hmi"
loc = s2 .. "hmi"
elseif stem:match(v.."l.$") then
elseif s1:match(v.."l$") then
data.forms["m"] = {s2 .. "lma"}
data.forms["m"] = {s2 .. "lma"}
loc = s2 .. "lmi"
loc = s2 .. "lmi"
Line 425: Line 448:
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 454: Line 477:
table.insert(data.categories, "Siwa u-declension " .. data.pos)
table.insert(data.categories, "Siwa u-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if stem:match("[aei]$") then
if stem:match("[aei]$") then
Line 464: Line 487:
data.forms["m"] = {s3 .. "mmo"}
data.forms["m"] = {s3 .. "mmo"}
loc = s3 .. "mmoi"
loc = s3 .. "mmoi"
elseif stem:match(v.."hh.$") then
data.forms["m"] = {s3 .. "hmo"}
loc = s3 .. "hmoi"
elseif stem:match(v.."[btpd].$") then
elseif stem:match(v.."[btpd].$") then
data.forms["m"] = {s2 .. "bmo"}
data.forms["m"] = {s2 .. "bmo"}
Line 481: Line 507:
na = true
na = true
end
end
elseif stem:match("[ouyů]$") then
elseif stem:match("[ouyỷů]$") then
if args.ld then
if args.ld then
data.forms["m"] = {stem .. "ma"}
data.forms["m"] = {stem .. "ma"}
Line 510: Line 536:
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 544: Line 570:
data.forms["abl"] = {}
data.forms["abl"] = {}
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if stem:match("a$") then
if stem:match("a$") then
Line 603: Line 629:
data.forms["m"] = {s2 .. "sti"}
data.forms["m"] = {s2 .. "sti"}
loc = s2 .. "sti"
loc = s2 .. "sti"
elseif stem:match(v.."ṡ.$") then
data.forms["m"] = {s2 .. "ṡti"}
loc = s2 .. "ṡti"
elseif stem:match(v.."[rhk].$") then
elseif stem:match(v.."[rhk].$") then
data.forms["m"] = {s2 .. "hdi"}
data.forms["m"] = {s2 .. "hdi"}
Line 649: Line 678:
end
end
table.insert(data.forms["ine"], csub((ine or loc) .. ce[1]))
table.insert(data.forms["ine"], (ine or loc) .. ce[1])
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. (match(stem, "[vg].$") and "ga" or ce[3])}
data.forms["ade"] = {(ade or loc) .. ce[4]}
data.forms["ade"] = {(ade or loc) .. ce[4]}
table.insert(data.forms["all"], (all or loc) .. ce[5])
table.insert(data.forms["all"], (all or loc) .. ce[5])
Line 663: Line 692:
["nolen"] = {type = "boolean"},
["nolen"] = {type = "boolean"},
["d"] = {type = "boolean"},
["d"] = {type = "boolean"},
["d2"] = {type = "boolean"},
["s"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
Line 673: Line 703:
local s = args.s and "hh" or "h"
local s = args.s and "hh" or "h"
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if stem:match(v.."d.s$") then
if stem:match(v.."d.s$") then
Line 684: Line 714:
ine, all, abl = s1 .. "hi", s1 .. "hi", s1 .. "hi"
ine, all, abl = s1 .. "hi", s1 .. "hi", s1 .. "hi"
else
else
data.forms["m"] = {(args.d and s2 or s1) .. s .. "i"}
data.forms["m"] = {(args.d2 and s3 or args.d and s2 or s1) .. s .. "i"}
ill, ela, ade = (args.d and s2 or s1) .. "h", (args.d and s2 or s1) .. "h", (args.d and s2 or s1) .. "h"
ill, ela, ade = (args.d2 and s3 or args.d and s2 or s1) .. "h", (args.d2 and s3 or args.d and s2 or s1) .. "h", (args.d2 and s3 or args.d and s2 or s1) .. "h"
ine, all, abl = (args.d and s2 or s1) .. s .. "i", (args.d and s2 or s1) .. s .. "i", (args.d and s2 or s1) .. s .. "i"
ine, all, abl = (args.d2 and s3 or args.d and s2 or s1) .. s .. "i", (args.d2 and s3 or args.d and s2 or s1) .. s .. "i", (args.d2 and s3 or args.d and s2 or s1) .. s .. "i"
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 712: Line 742:
table.insert(data.categories, "Siwa n-declension " .. data.pos)
table.insert(data.categories, "Siwa n-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if sv:match("[aou]$") then
if sv:match("[aou]$") then
data.forms["m"] = {stem .. "ta"}
data.forms["m"] = {stem .. "ta"}
loc = sv == "o" and s2 .. "õri" or s1 .. "ri"
loc = match(stem, "on$") and s2 .. "õri" or s1 .. "ri"
elseif sv:match("[eiyůỉ]$") then
elseif sv:match("[eiyůỉę]$") then
data.forms["m"] = {s1 .. "s"}
data.forms["m"] = {s1 .. "s"}
loc = s1 .. "s" .. (args.d and "" or "i")
loc = s1 .. "s" .. (args.d and "" or "i")
end
end
data.forms["ine"] = {csub((ine or loc) .. ce[1])}
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
Line 735: Line 765:
[2] = {},
[2] = {},
["nolen"] = {type = "boolean"},
["nolen"] = {type = "boolean"},
["ut"] = {},
["ut"] = {type = "boolean"},
["s"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
Line 745: Line 775:
table.insert(data.categories, "Siwa t-declension " .. data.pos)
table.insert(data.categories, "Siwa t-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
data.forms["u"] = {data.alt or PAGENAME}
if args.ut then
if args.ut then
data.forms["m"] = {s2 .. "lda", s2 .. "utta"}
data.forms["m"] = {s2 .. "lda", s1 .. "tta"}
loc = s1 .. "ttai"
elseif sv:match("[aou]$") then
elseif sv:match("[aou]$") then
data.forms["m"] = {stem .. "ta"}
data.forms["m"] = {stem .. "ta"}
loc = stem .. "tai"
elseif sv:match("[eiyů]$") then
elseif sv:match("[eiyů]$") then
data.forms["m"] = {s1 .. "tsta", s1 .. "ddįa", s1 .. "tsitta"}
data.forms["m"] = {s1 .. "tsta", s1 .. "ddįa", s1 .. "tsitta"}
loc = s1 .. "tsti"
end
data.forms["ine"] = {(ine or loc) .. ce[1]}
data.forms["ill"] = {(ill or loc) .. ce[2]}
data.forms["ela"] = {(ela or loc) .. ce[3]}
data.forms["ade"] = {(ade or loc) .. ce[4]}
data.forms["all"] = {(all or loc) .. ce[5]}
data.forms["abl"] = {(abl or loc) .. ce[6]}
for n, case in pairs(cases) do
if sv:match("[eiyů]$") then
table.insert(data.forms[case], s1 .. "ddįi" .. ce[n])
table.insert(data.forms[case], s1 .. "tsitti" .. ce[n])
end
end
end
end
end
})
})
Line 776: Line 824:
}
}
data.forms["u"] = {PAGENAME}
local dtl = {
["aa"] = "ả", ["ee"] = "ẻ", ["ii"] = "ỉ",
["oo"] = "ỏ", ["uu"] = "ủ", ["yy"] = "ỷ",
}
data.forms["u"] = {data.alt or PAGENAME}
if sv:match("[aou]$") then
if sv:match("[aou]$") then
Line 792: Line 845:
end
end
for double, long in pairs(dtl) do
data.forms["m"][1] = gsub(data.forms["m"][1], double, long)
end
end
end
})
})
Line 799: Line 855:
[2] = {}, -- stressed vowel
[2] = {}, -- stressed vowel
["h"] = {type = "boolean"}, -- Human
["h"] = {type = "boolean"}, -- Human
["t"] = {type = "boolean"}, -- extra T
["av"] = {type = "boolean"}, -- After Vowel
["av"] = {type = "boolean"}, -- After Vowel
["s"] = {type = "boolean"},
["s"] = {type = "boolean"},
["d"] = {type = "boolean"},
["d"] = {type = "boolean"},
["i"] = {type = "boolean"}, -- -i Subgroup
},
},
}
}
Line 813: Line 871:
data.forms["u_sg"] = {PAGENAME}
data.forms["u_sg"] = {PAGENAME}
if stem:match("m[ao]$") then
if stem:match("[iỉy]$") and args.i then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s2 .. "tṡa"}
data.forms["m_pl"] = {s2 .. "tṡagi"}
elseif stem:match("m[ao]$") then
data.forms["m_sg"] = {s2 .. (exactly(sv, "[ou]") and "ṡi" or "ka")}
data.forms["m_sg"] = {s2 .. (exactly(sv, "[ou]") and "ṡi" or "ka")}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_pl"] = {s2 .. (exactly(sv, "[ou]") and "ṡi" or "ka") .. "gi"}
data.forms["m_pl"] = {s2 .. (exactly(sv, "[ou]") and "ṡi" or "ka") .. "gi"}
elseif stem:match("mi$") then
elseif stem:match("mi$") then
data.forms["m_sg"] = {s2 .. "ta", s2 .. "tta"}
data.forms["m_sg"] = {s2 .. (args.t and "t" or "") .. "ta"}
data.forms["u_pl"] = {stem .. "gi", s2 .. "mṡi", s2 .. "mhi"}
if stem:match(v.."..$") then table.insert(data.forms["m_sg"], s2 .. "tta") end
data.forms["m_pl"] = {s2 .. "tagi", s2 .. "ttagi"}
data.forms["u_pl"] = {stem .. "gi"}
if stem:match(v.."..$") then
table.insert(data.forms["u_pl"], s2 .. "mhi")
table.insert(data.forms["u_pl"], s2 .. "mṡi")
end
data.forms["m_pl"] = {s2 .. (args.t and "t" or "") .. "tagi"}
if stem:match(v.."..$") then table.insert(data.forms["m_pl"], s2 .. "ttagi") end
elseif stem:match("[bpv]a$") then
elseif stem:match("[bpv]a$") then
data.forms["m_sg"] = {s2 .. "u"}
data.forms["m_sg"] = {s2 .. "u"}
data.forms["m_sg"][1] = gsub(data.forms["m_sg"][1], "uu", "ủ")
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_pl"] = {s2 .. "ugi"}
data.forms["m_pl"] = {s2 .. "ugi"}
data.forms["m_pl"][1] = gsub(data.forms["m_pl"][1], "uu", "ủ")
elseif stem:match("[bpv]i$") then
elseif stem:match("[bpv]i$") then
local repl = gsub(s2, "h$", "k"); repl = gsub(repl, "ḍ$", "hh"); repl = gsub(repl, "lp$", "ll")
local repl = gsub(s2, "h$", "k"); repl = gsub(repl, "ḍ$", "hh"); repl = gsub(repl, "lp$", "ll")
      repl = gsub(repl, "p$", "ḥḥ"); repl = gsub(repl, "ṡ$", "ṡṡ")
data.forms["m_sg"] = {repl .. "umi"}
data.forms["m_sg"] = {repl .. "umi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
Line 837: Line 908:
elseif stem:match("[tn][ao]$") then
elseif stem:match("[tn][ao]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
if stem:match(nv.."..$") and not stem:match("[tsḍlgġksṡr]..$") then
if stem:match(nv.."..$") and not stem:match("[tsḍlgġksṡrd]..$") then
data.forms["m_sg"] = {s2 .. "ųa"}
data.forms["m_sg"] = {s2 .. "ųa"}
data.forms["m_pl"] = {s2 .. "ųagi"}
data.forms["m_pl"] = {s2 .. "ųagi"}
Line 851: Line 922:
end
end
data.forms["m_sg"] = {s2 .. "įa"}
data.forms["m_sg"] = {s2 .. (match(s2, "h$") and "h" or "") .. "įa"}
data.forms["m_pl"] = {s2 .. "įagi"}
data.forms["m_pl"] = {s2 .. (match(s2, "h$") and "h" or "") .. "įagi"}
elseif stem:match("t[ao]$") then
if args.s then
data.forms["m_sg"] = {s2 .. "vva"}
data.forms["m_pl"] = {s2 .. "vvagi"}
elseif not s2:match("[tklrḍsṡgġ]$") then
data.forms["m_sg"] = {s2 .. "ųa"}
data.forms["m_pl"] = {s2 .. "ųagi"}
else
data.forms["m_sg"] = {s2 .. "va"}
data.forms["m_pl"] = {s2 .. "vagi"}
end
data.forms["u_sg"] = {stem .. "gi"}
elseif stem:match("t[ei]$") then
elseif stem:match("t[ei]$") then
data.forms["u_pl"] = {stem .. "gi", s1 .. "si"}
data.forms["u_pl"] = {stem .. "gi", s1 .. "si"}
Line 861: Line 945:
if args.h then
if args.h then
data.forms["m_sg"] = {s2 .. "tta"}
data.forms["m_sg"] = {s2 .. (match(s2, "t$") and "" or "t") .. "ta"}
data.forms["m_pl"] = {s2 .. "ttagi"}
data.forms["m_pl"] = {s2 .. (match(s2, "t$") and "" or "t") .. "tagi"}
else
else
data.forms["m_sg"] = {s2 .. "hi", s2 .. "ḥi"}
data.forms["m_sg"] = {s2 .. "hi", s2 .. "ḥi"}
Line 868: Line 952:
end
end
elseif stem:match("si$") then
elseif stem:match("si$") then
data.forms["u_pl"] = {stem .. "gi", s1 .. "sġi"}
data.forms["u_pl"] = {stem .. "gi", s2 .. "sġi"}
data.forms["m_sg"] = {s2 .. (av and "tta" or "ta")}
data.forms["m_sg"] = {s2 .. (av and "tta" or "ta")}
data.forms["m_pl"] = {s2 .. (av and "ttagi" or "tagi")}
data.forms["m_pl"] = {s2 .. (av and "ttagi" or "tagi")}
Line 881: Line 965:
elseif stem:match("[lr]i$") then
elseif stem:match("[lr]i$") then
data.forms["u_pl"] = {s1 .. (av and "hi" or "igi")}
data.forms["u_pl"] = {s1 .. (av and "hi" or "igi")}
data.forms["m_sg"] = {s2 .. "tṡa"}
data.forms["m_sg"] = {s2 .. (stem:match("dli$") and "dįa" or s1:match("r$") and "" or "l") .. "tṡa"}
data.forms["m_pl"] = {s2 .. "tṡagi"}
data.forms["m_pl"] = {s2 .. (stem:match("dli$") and "dįagi" or s1:match("r$") and "" or "l") .. "tṡagi"}
elseif stem:match("lu$") then
elseif stem:match("lu$") then
data.forms["u_pl"] = {s1 .. (av and "hi" or "ugi")}
data.forms["u_pl"] = {s1 .. (av and "hi" or "ugi")}
Line 889: Line 973:
elseif stem:match("k[ao]$") then
elseif stem:match("k[ao]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s2 .. "uni"}
data.forms["m_sg"] = {s2 .. (match(s2, "h$") and "h" or "") ..  "uni"}
data.forms["m_pl"] = {s2 .. "unhi"}
data.forms["m_pl"] = {s2 .. (match(s2, "h$") and "h" or "") .. "unhi"}
elseif stem:match("ki$") then
elseif stem:match("ki$") then
data.forms["u_pl"] = {s1 .. (av and "ṡi" or "igi")}
data.forms["u_pl"] = {s1 .. (av and "ṡi" or "igi")}
data.forms["m_sg"] = {s2 .. "tṡa"}
data.forms["m_sg"] = {s2 .. "tṡa"}
data.forms["m_pl"] = {s2 .. "tṡagi"}
data.forms["m_pl"] = {s2 .. "tṡagi"}
data.forms["m_sg"][1] = gsub(data.forms["m_sg"][1], "kt", "ht")
data.forms["m_pl"][1] = gsub(data.forms["m_pl"][1], "kt", "ht")
elseif stem:match("g[aoi]$") then
elseif stem:match("g[aoi]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
Line 907: Line 993:
elseif stem:match("h[ao]$") then
elseif stem:match("h[ao]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s2 .. "ra"}
data.forms["m_sg"] = {(args.d and s3 or s2) .. "ra"}
data.forms["m_pl"] = {s2 .. "ragi"}
data.forms["m_pl"] = {(args.d and s3 or s2) .. "ragi"}
elseif stem:match("hi$") then
elseif stem:match("hi$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s2 .. "tṡa"}
data.forms["m_sg"] = {(args.d and s3 or s2) .. "tṡa"}
data.forms["m_pl"] = {s2 .. "tṡagi"}
data.forms["m_pl"] = {(args.d and s3 or s2) .. "tṡagi"}
elseif stem:match("[iỉy]$") then
elseif stem:match("[iỉy]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s1 .. "itṡa"}
data.forms["m_sg"] = {s1 .. "tṡa"}
data.forms["m_pl"] = {s1 .. "itṡagi"}
data.forms["m_pl"] = {s1 .. "tṡagi"}
end
end
if match(data.forms["u_pl"][1], "igi$") then
if match(data.forms["u_pl"][1], "igi$") then
table.insert(data.forms["u_pl"], s1 .. "ęgi")
table.insert(data.forms["u_pl"], sub(data.forms["u_pl"][1], 1, -4) .. "ęgi")
end
end
if match(data.forms["m_pl"][1], "igi$") then
if match(data.forms["m_pl"][1], "igi$") then
table.insert(data.forms["m_pl"], s1 .. "ęgi")
table.insert(data.forms["m_pl"], sub(data.forms["m_pl"][1], 1, -4) .. "ęgi")
end
end
end
end
})
})
data["aḍba"] = function(args, data)
data.forms["u_pl"] = {"aḍba"}
data.forms["m_pl"] = {"aubba"}
end


data["aumulhi"] = function(args, data)
data["aumulhi"] = function(args, data)
Line 1,005: Line 1,096:
data.forms["all"] = {"ivveibma", "iobibma"}
data.forms["all"] = {"ivveibma", "iobibma"}
data.forms["abl"] = {"ivveiska", "iobiska"}
data.forms["abl"] = {"ivveiska", "iobiska"}
end
data["eu"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"eu"}
data.forms["m"] = {"eme"}
end
end


Line 1,044: Line 1,142:
data.forms["u"] = {"gảgi"}
data.forms["u"] = {"gảgi"}
data.forms["m"] = {"gęįagi"}
data.forms["m"] = {"gęįagi"}
end
data["gei"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"gei"}
data.forms["m"] = {"geįe"}
end
end


Line 1,072: Line 1,163:
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"goi"}
data.forms["u"] = {"goi"}
data.forms["m"] = {"gogįo"}
data.forms["m"] = {"goįo"}
end
end


Line 1,186: Line 1,277:
data.forms["m_sg"] = {"ketkume"}
data.forms["m_sg"] = {"ketkume"}
data.forms["m_pl"] = {"keḍma"}
data.forms["m_pl"] = {"keḍma"}
end
data["kembo"] = function(args, data)
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"kembo"}
data.forms["u_pl"] = {"kảmbogi"}
data.forms["m_sg"] = {"kảmoųi"}
data.forms["m_pl"] = {"kảmoṡi"}
end
end


Line 1,202: Line 1,301:
data.forms["u_sg"] = {"kengi"}
data.forms["u_sg"] = {"kengi"}
data.forms["m_sg"] = {"kegna"}
data.forms["m_sg"] = {"kegna"}
end
data["kili"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {"kili"}
data.forms["m"] = {"kidli"}
end
data["kiḍba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"kita"}
data.forms["u_pl"] = {"kiḍba"}
data.forms["m_sg"] = {"kivva"}
data.forms["m_pl"] = {"keubba"}
end
data["koḍba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_pl"] = {"koḍba"}
data.forms["m_pl"] = {"kỏbba"}
end
data["koḍḍa"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_pl"] = {"koḍḍa"}
data.forms["m_pl"] = {"kỏhha"}
end
data["kůimpa"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"kůitton"}
data.forms["m_sg"] = {"kůittos"}
data.forms["u_pl"] = {"kůimpa"}
data.forms["m_pl"] = {"kygįua", "kỷbba"}
end
data["kỷ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"kỷ"}
data.forms["m"] = {"kyby"}
end
data["kvỷ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"kvỷ"}
data.forms["m"] = {"kvyby"}
end
data["leḍba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"lahton"}
data.forms["u_pl"] = {"leḍba"}
data.forms["m_sg"] = {"lahtos"}
data.forms["m_pl"] = {"leḍma"}
end
data["lỉsġi"] = function(args, data)
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"lỉsġi"}
data.forms["m_sg"] = {"lihhįet"}
end
data["lįỏ"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {"lįỏ"}
data.forms["m"] = {"lyra"}
end
data["lỷ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"lỷ"}
data.forms["m"] = {"lůbů"}
data.forms["ine"] = {"lỷgįia", "lybia"}
data.forms["ill"] = {"lỷgįita", "lybita"}
data.forms["ela"] = {"lỷgįika", "lybika"}
data.forms["ade"] = {"lỷgįima", "lybima"}
data.forms["all"] = {"lỷgįibma", "lybibma"}
data.forms["abl"] = {"lỷgįiska", "lybiska"}
end
data["madu"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"madu"}
data.forms["m"] = {"mama"}
end
data["nảrri"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"nảrri"}
data.forms["m_sg"] = {"nęręt"}
end
data["nảvi"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"nảvi"}
data.forms["m"] = {"nęgįi"}
end
data["nay"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"nay"}
data.forms["m"] = {"nęma"}
end
end


Line 1,217: Line 1,432:
data.forms["all"] = {loc .. ce[5]}
data.forms["all"] = {loc .. ce[5]}
data.forms["abl"] = {loc .. ce[6]}
data.forms["abl"] = {loc .. ce[6]}
end
data["nįarri"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"nįarri"}
data.forms["m_sg"] = {"nįaret"}
end
data["niebini"] = function(args, data)
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"niebini"}
data.forms["u_pl"] = {"niebinhi", "niebinṡi"}
data.forms["m_sg"] = {"nieigįa", "niẻddįa"}
data.forms["m_pl"] = {"nieigįagi", "niẻddįagi"}
end
data["nige"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"nige"}
data.forms["m"] = {"niddįi"}
end
data["oaḍbi"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"oadi"}
data.forms["u_pl"] = {"oaḍbi"}
data.forms["m_sg"] = {"vaika"}
data.forms["m_pl"] = {"vaubbi", "vaubba"}
end
data["omna"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_pl"] = {"omna"}
data.forms["m_pl"] = {"ỏbba"}
end
data["ỏ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ỏ"}
data.forms["m"] = {"obo", "ỏbo"}
end
data["pỷka"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"pỷka"}
data.forms["m"] = {"pyby"}
end
data["retema"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"retema"}
data.forms["u_pl"] = {"revva"}
data.forms["m_sg"] = {"sitema"}
data.forms["m_pl"] = {"sivva"}
end
data["rįaḍba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"rįanna"}
data.forms["u_pl"] = {"rįaḍba"}
data.forms["m_sg"] = {"rįanka"}
data.forms["m_pl"] = {"rįaubba"}
end
data["rủ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"rủ"}
data.forms["m"] = {"rumu"}
end
data["rỷ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"rỷ"}
data.forms["m"] = {"rymy"}
end
data["sảhpa"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"sảhta"}
data.forms["u_pl"] = {"sảhpa"}
data.forms["m_sg"] = {"sảhhųa"}
data.forms["m_pl"] = {"sảmġa"}
end
data["saḍba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"sata"}
data.forms["u_pl"] = {"saḍba"}
data.forms["m_sg"] = {"savva"}
data.forms["m_pl"] = {"saubba"}
end
data["sambo"] = function(args, data)
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"sambo"}
data.forms["u_pl"] = {"sảmbogi"}
data.forms["m_sg"] = {"sảmoųi"}
data.forms["m_pl"] = {"sąmoṡi"}
end
data["sẻu"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"sẻu"}
data.forms["m"] = {"sůbů"}
end
data["tiebba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"tiemo"}
data.forms["u_pl"] = {"tiebba"}
data.forms["m_sg"] = {"tieka"}
data.forms["m_pl"] = {"tiehba"}
end
data["tỏ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"tỏ"}
data.forms["m"] = {"tobo"}
end
end


Line 1,226: Line 1,574:
data.forms["m_sg"] = {"todatta"}
data.forms["m_sg"] = {"todatta"}
data.forms["m_pl"] = {"todattagi"}
data.forms["m_pl"] = {"todattagi"}
end
data["tṡemi"] = function(args, data)
table.insert(data.categories, "Siwa irregular adjectives")
data.forms["u"] = {"tṡemi"}
data.forms["m"] = {"tṡebi"}
data.forms["ine"] = {"tṡebi" .. ce[1]}
data.forms["ill"] = {"tṡebi" .. ce[2]}
data.forms["ela"] = {"tṡebi" .. ce[3]}
data.forms["ade"] = {"tṡebi" .. ce[4]}
data.forms["all"] = {"tṡebi" .. ce[5]}
data.forms["abl"] = {"tṡebi" .. ce[6]}
end
data["umpa"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"uba"}
data.forms["u_pl"] = {"umpa"}
data.forms["m_sg"] = {"oama"}
data.forms["m_pl"] = {"ủppa"}
end
data["vả"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"vả"}
data.forms["m"] = {"vęįa"}
end
data["ỷ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ỷ"}
data.forms["m"] = {"yby"}
end
end


return data
return data