Module:siwa-noun/data: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(234 intermediate revisions by the same user not shown)
Line 1: Line 1:
local sub = mw.ustring.sub
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local match = mw.ustring.match
local v = "([aeiouyůõảẻỉỏủỷę])"
local v = "([aeiouyůõảẻỉỏủỷęo̊])"
local nv = "([^aeiouyůõảẻỉỏủỷę])"
local nv = "([^aeiouyůõảẻỉỏủỷę])"
local PAGENAME = mw.title.getCurrentTitle().text
local PAGENAME = mw.title.getCurrentTitle().text
Line 14: Line 15:
local function exactly(source, pattern)
local function exactly(source, pattern)
return source:match("^" .. pattern .. "$")
return source:match("^" .. pattern .. "$")
end
local function csub(term, foo, bar, n)
local coalesced = term
local patterns = {
{"([aoueů])", "%1gįa"}, {"ue", "ugįa"}, {"ie", "ieįa"},
{"ay", "ębia"}, {"uo", "ubia"}, {"au", "abia"}, {"o[au]", "obia"},
{"e[uy]", "ůbia"}, {"iu", "ibia"}, {"ả", "ęgįa"}, {"ỏ", "obia"},
{"ủ", "ubia"}, {"ẻ", "egįa"}, {"ỉ", "igįa"}, {"ỷ", "ybia"}, {"ẻu", "ůbia"}
}
for _, pat in ipairs(patterns) do
for _, case in ipairs(ce) do
coalesced = gsub(term, pat[1] .. case .. "$", pat[2])
end
end
return coalesced
end
end


Line 20: Line 39:
data["a"] = {
data["a"] = {
params = {
params = {
["nolen"] = {}, -- No LENition
["nolen"] = {type = "boolean"}, -- No LENition
["ld"] = {}, -- Lenition Declension
["ld"] = {type = "boolean"}, -- Lenition Declension
["d"] = {}, -- vowel Deletion
["d"] = {type = "boolean"}, -- vowel Deletion
["d2"] = {type = "boolean"},
["s"] = {type = "boolean"}, -- Stressed
},
},
}
}
setmetatable(data["a"], {__call = function(self, args, data)
setmetatable(data["a"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
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 48: Line 69:
data.forms["m"] = {s2 .. "kka"}
data.forms["m"] = {s2 .. "kka"}
loc = s2 .. "kki"
loc = s2 .. "kki"
elseif stem:match(v.."m.$") then
elseif stem:match("m.$") then
data.forms["m"] = {s2 .. (data.q == "s" and "mġa" or data.q == "l" and "mka" or "kka")}
data.forms["m"] = {s2 .. (data.q == "s" and "mġa" or data.q == "l" and "mka" or "kka")}
loc = s2 .. (data.q == "s" and "mṡi" or data.q == "l" and "mki" or "kki")
loc = s2 .. (data.q == "s" and "mṡi" or data.q == "l" and "mki" or "kki")
Line 58: Line 79:
loc = s2 .. (data.q == "s" and "pri" or "ḍgi")
loc = s2 .. (data.q == "s" and "pri" or "ḍgi")
elseif stem:match(v.."[td].$") then
elseif stem:match(v.."[td].$") then
data.forms["m"] = {s2 .. (data.q == "s" and "tra" or "rka")}
data.forms["m"] = {s2 .. (data.q == "s" and "tra" or "tka")}
loc = s2 .. (data.q == "s" and "tri" or "tṡi")
loc = s2 .. (data.q == "s" and "tri" or "tṡi")
elseif stem:match(v.."r.$") then
elseif stem:match(v.."r.$") then
Line 67: 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
Line 93: Line 114:
data["e"] = {
data["e"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ld"] = {},
["ld"] = {type = "boolean"},
["d"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["e"], {__call = function(self, args, data)
setmetatable(data["e"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
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
if args.ld then
if args.ld then
data.forms["m"] = {stem .. "ri"}
data.forms["m"] = {(args.d and s1 or stem) .. "ri"}
loc = stem .. "ri"
loc = (args.d and s1 or stem) .. "ri"
na = true
na = true
elseif stem:match(v.."ts.$") then
elseif stem:match(v.."ts.$") then
Line 145: Line 168:
loc = s2 .. "ġġi"
loc = s2 .. "ġġi"
else
else
data.forms["m"] = {stem .. "ri"}
data.forms["m"] = {(args.d and s1 or stem) .. "ri"}
loc = stem .. "ri"
loc = (args.d and s1 or stem) .. "ri"
na = true
na = true
end
end
elseif stem:match("[io]$") then
elseif stem:match("[io]$") then
if args.ld then
if args.ld then
data.forms["m"] = {s1 .. "ie"}
if stem:match("o$") then
loc = s1 .. "iei"
data.forms["m"] = {s1 .. "ue", s1 .. "obi"}
na = true
loc = s1 .. "uei"
na = true
else
data.forms["m"] = {s1 .. "ie"}
loc = s1 .. "iei"
na = true
end
elseif stem:match(v.."mm.$") then
elseif stem:match(v.."mm.$") then
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 173: Line 205:
elseif stem:match("[uyů]$") then
elseif stem:match("[uyů]$") then
if args.ld then
if args.ld then
data.forms["m"] = {stem .. "me"}
data.forms["m"] = {(args.d and s1 or stem) .. "me"}
loc = stem .. "mei"
loc = (args.d and s1 or stem) .. "mei"
na = true
na = true
elseif stem:match(v.."mm.$") then
elseif stem:match(v.."mm.$") then
Line 186: Line 218:
loc = s2 .. (data.q == "s" and "gme" or "hme")
loc = s2 .. (data.q == "s" and "gme" or "hme")
else
else
data.forms["m"] = {stem .. "me"}
data.forms["m"] = {(args.d and s1 or stem) .. "me"}
loc = stem .. "mei"
loc = (args.d and s1 or stem) .. "mei"
na = true
na = true
end
end
Line 211: Line 243:
data["i"] = {
data["i"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ld"] = {},
["ld"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["i"], {__call = function(self, args, data)
setmetatable(data["i"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
table.insert(data.categories, "Siwa i-declension " .. data.pos)
table.insert(data.categories, "Siwa i-declension " .. data.pos)
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 230: Line 263:
all, abl = stem, stem
all, abl = stem, stem
table.insert(data.forms["ine"], s1 .. "ỉa")
table.insert(data.forms["ine"], s1 .. "ỉa")
table.insert(data.forms["all"], s1 .. "iddįibma")
if sub(stem, -1, -1) == "ỉ" then
table.insert(data.forms["abl"], s1 .. "iddįiska")
table.insert(data.forms["all"], s1 .. "iddįibma")
table.insert(data.forms["abl"], s1 .. "iddįiska")
end
na = true
na = true
else
else
Line 240: 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 257: 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 269: Line 310:
all, abl = stem, stem
all, abl = stem, stem
table.insert(data.forms["ine"], s1 .. "ỉa")
table.insert(data.forms["ine"], s1 .. "ỉa")
table.insert(data.forms["all"], s1 .. "iddįibma")
if sub(stem, -1, -1) == "ỉ" then
table.insert(data.forms["abl"], s1 .. "iddįiska")
table.insert(data.forms["all"], s1 .. "iddįibma")
table.insert(data.forms["abl"], s1 .. "iddįiska")
end
na = true
na = true
else
else
Line 282: Line 325:
table.insert(data.forms["ine"], (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])
table.insert(data.forms["abl"], (abl or loc) .. ce[6])
table.insert(data.forms["abl"], (abl or loc) .. ce[6])
end
end
Line 292: Line 336:
data["o"] = {
data["o"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ld"] = {},
["ld"] = {type = "boolean"},
["s"] = {type = "boolean"},
["d"] = {type = "boolean"},
},
},
}
}
setmetatable(data["o"], {__call = function(self, args, data)
setmetatable(data["o"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
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"] = {stem .. "mo"}
data.forms["m"] = {(args.d and s1 or stem == "kode" and "koi" or stem == "mohe" and "moi" or stem) .. "mo"}
loc = stem .. "moi"
loc = (args.d and s1 or stem) .. "moi"
na = true
na = true
elseif stem:match(v.."[mn][mn].$") then
elseif stem:match(v.."[mnv][mnv].$") then
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 327: Line 376:
loc = s2 .. "lmoi"
loc = s2 .. "lmoi"
else
else
data.forms["m"] = {stem .. "mo"}
data.forms["m"] = {(args.d and s1 or stem) .. "mo"}
loc = stem .. "moi"
loc = (args.d and s1 or stem) .. "moi"
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"] = {stem .. "ko"}
data.forms["m"] = {(args.d and s1 or stem) .. "ko"}
loc = stem .. "koi"
loc = (args.d and s1 or stem) .. "koi"
na = true
na = true
elseif stem:match(v.."hhį.$") then
elseif stem:match(v.."hhį.$") then
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.."[mn][mn].$") then
elseif stem:match(v.."hh.$") then
data.forms["m"] = {s3 .. "kko"}
data.forms["m"] = {s3 .. "hko"}
loc = s3 .. "kkoi"
loc = s3 .. "hkoi"
elseif stem:match(v.."[mnv][mnv].$") then
data.forms["m"] = {(sub(stem, -4, -4) == "o" and sub(stem, 1, -5) .. "õ" or s3) .. "kko"}
loc = (sub(stem, -4, -4) == "o" and sub(stem, 1, -5) .. "õ" or s3) .. "kkoi"
elseif stem:match(v.."[mnkg].$") then
elseif stem:match(v.."[mnkg].$") then
data.forms["m"] = {s2 .. "kko"}
data.forms["m"] = {(sub(stem, -3, -3) == "o" and not args.s and s3 .. "õ" or s2) .. "kko"}
loc = s2 .. "kkoi"
loc = (sub(stem, -3, -3) == "o" and not args.s and s3 .. "õ" or s2) .. "kkoi"
elseif stem:match(v.."[lrs]k.$") or stem:match(v.."sġ.$") then
elseif stem:match(v.."[lrs]k.$") or stem:match(v.."sġ.$") then
data.forms["m"] = {s2 .. "kko"}
data.forms["m"] = {s2 .. "kko"}
Line 358: Line 410:
loc = s2 .. "ṡkoi"
loc = s2 .. "ṡkoi"
else
else
data.forms["m"] = {stem .. "ko"}
data.forms["m"] = {(args.d and s1 or stem) .. "ko"}
loc = stem .. "koi"
loc = (args.d and s1 or stem) .. "koi"
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"}
local del = args.d and s1 or stem
ill, ela = stem .. "n", stem .. "n"
data.forms["m"] = {del .. "ma"}
ine, ade, all, abl = stem .. "mi", stem .. "mi", stem .. "mi", stem .. "mi"
ill, ela = del .. "n", del .. "n"
ine, ade, all, abl = del .. "mi", del .. "mi", del .. "mi", del .. "mi"
na = true
na = true
elseif stem:match(v.."[mn][mn].$") then
elseif s1:match(v.."[bptd]$") then
data.forms["m"] = {s2 .. "bma"}
loc = s2 .. "bmi"
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"
else
else
data.forms["m"] = {stem .. "ma"}
local del = args.d and s1 or stem
ill, ela = stem .. "n", stem .. "n"
data.forms["m"] = {del .. "ma"}
ine, ade, all, abl = stem .. "mi", stem .. "mi", stem .. "mi", stem .. "mi"
ill, ela = del .. "n", del .. "n"
ine, ade, all, abl = del .. "mi", del .. "mi", del .. "mi", del .. "mi"
na = true
na = true
end
end
Line 397: Line 457:
for n, case in pairs(cases) do
for n, case in pairs(cases) do
if stem:match(v.."[mnkg]i$") and not na then
if stem:match(v.."[mnkg]i$") and not na then
table.insert(data.forms[case], s2 .. "kki" .. ce[n])
table.insert(data.forms[case], (sub(stem, -3, -3) == "o" and s3 .. "õ" or s2) .. "kki" .. ce[n])
elseif (stem:match(v.."[lrs]ki$") or stem:match(v.."sġi$")) and not na then
elseif (stem:match(v.."[lrs]ki$") or stem:match(v.."sġi$")) and not na then
table.insert(data.forms[case], s2 .. "kki" .. ce[n])
table.insert(data.forms[case], s2 .. "kki" .. ce[n])
Line 407: Line 467:
data["u"] = {
data["u"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ld"] = {},
["ld"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["u"], {__call = function(self, args, data)
setmetatable(data["u"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
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 423: Line 484:
loc = stem .. "moi"
loc = stem .. "moi"
na = true
na = true
elseif stem:match(v.."[mn][mn].$") then
elseif stem:match(v.."[mnv][mnv].$") then
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 443: 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 455: Line 519:
data.forms["m"] = {s2 .. "mma", s2 .. "mmo"}
data.forms["m"] = {s2 .. "mma", s2 .. "mmo"}
loc = s2 .. "mmi"
loc = s2 .. "mmi"
elseif stem:match(v.."[bptd].$") then
data.forms["m"] = {s2 .. "bma"}
loc = s2 .. "bmi"
elseif stem:match(v.."[rhgk].$") then
elseif stem:match(v.."[rhgk].$") then
data.forms["m"] = {s2 .. "hma"}
data.forms["m"] = {s2 .. "hma"}
Line 488: Line 555:
data["y"] = {
data["y"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ld"] = {},
["ld"] = {type = "boolean"},
["s"] = {}, -- Stressed lenition
["s"] = {type = "boolean"},
["d"] = {type = "boolean"},
},
},
}
}
Line 502: 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
if args.ld then
if args.ld then
data.forms["m"] = {stem .. "mo"}
data.forms["m"] = {(args.d and s1 or stem) .. "mo"}
loc = stem .. "moi"
loc = (args.d and s1 or stem) .. "moi"
na = true
na = true
elseif stem:match(v.."[mn][mn].$") then
elseif stem:match(v.."[mn][mn].$") then
Line 522: Line 590:
loc = s2 .. "lmoi"
loc = s2 .. "lmoi"
else
else
data.forms["m"] = {stem .. "mo"}
data.forms["m"] = {(args.d and s1 or stem) .. "mo"}
loc = stem .. "moi"
loc = (args.d and s1 or stem) .. "moi"
na = true
na = true
end
end
Line 561: 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 583: Line 654:
na = true
na = true
end
end
elseif stem:match("[ouyů]$") then
elseif stem:match("[ouyỷů]$") then
if stem:match(v.."[mn][mn].$") then
if args.ld then
data.forms["m"] = {stem .. "ma"}
ill, ela = stem .. "n", stem .. "n"
ine, ade, all, abl = stem .. "mi", stem .. "mi", stem .. "mi", stem .. "mi"
elseif stem:match(v.."[mn][mn].$") then
data.forms["m"] = {s3 .. "mma"}
data.forms["m"] = {s3 .. "mma"}
loc = s3 .. "mmi"
loc = s3 .. "mmi"
Line 597: Line 672:
loc = s2 .. "lmi"
loc = s2 .. "lmi"
else
else
data.forms["m"] = {stem .. "ma"}
data.forms["m"] = {(args.d and s1 or stem) .. "ma"}
ill, ela = stem .. "n", stem .. "n"
ill, ela = (args.d and s1 or stem) .. "n", (args.d and s1 or stem) .. "n"
ine, ade, all, abl = stem .. "mi", stem .. "mi", stem .. "mi", stem .. "mi"
ine, ade, all, abl = (args.d and s1 or stem) .. "mi", (args.d and s1 or stem) .. "mi", (args.d and s1 or stem) .. "mi", (args.d and s1 or stem) .. "mi"
end
end
end
end
Line 605: Line 680:
table.insert(data.forms["ine"], (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 615: Line 690:
data["s"] = {
data["s"] = {
params = {
params = {
["nolen"] = {},
["nolen"] = {type = "boolean"},
["d"] = {},
["d"] = {type = "boolean"},
["d2"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["s"], {__call = function(self, args, data)
setmetatable(data["s"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
table.insert(data.categories, "Siwa s-declension " .. data.pos)
table.insert(data.categories, "Siwa s-declension " .. data.pos)
data.forms["u"] = {PAGENAME}
local s = args.s and "hh" or "h"
data.forms["u"] = {data.alt or PAGENAME}
if stem:match(v.."d.s$") then
if stem:match(v.."d.s$") then
Line 635: 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) .. "hi"}
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) .. "hi", (args.d and s2 or s1) .. "hi", (args.d and s2 or s1) .. "hi"
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
Line 652: Line 731:
params = {
params = {
[2] = {},
[2] = {},
["nolen"] = {},
["nolen"] = {type = "boolean"},
["s"] = {type = "boolean"},
["d"] = {type = "boolean"},
},
},
}
}
setmetatable(data["n"], {__call = function(self, args, data)
setmetatable(data["n"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local sv = args[2]
local sv = args[2]
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 .. "si"
loc = s1 .. "s" .. (args.d and "" or "i")
end
end
Line 683: Line 764:
params = {
params = {
[2] = {},
[2] = {},
["nolen"] = {},
["nolen"] = {type = "boolean"},
["ut"] = {},
["ut"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["t"], {__call = function(self, args, data)
setmetatable(data["t"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local sv = args[2]
local sv = args[2]
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
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
})
})
Line 708: Line 808:
params = {
params = {
[2] = {},
[2] = {},
["nolen"] = {},
["nolen"] = {type = "boolean"},
["str"] = {type = "boolean"},
["s"] = {type = "boolean"},
},
},
}
}
setmetatable(data["l"], {__call = function(self, args, data)
setmetatable(data["l"], {__call = function(self, args, data)
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head))
local stem = args.nolen and data.head or m_com.coalescence(m_com.lenition(data.head), args.s)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
local s1, s2, s3 = sub(stem, 1, -2), sub(stem, 1, -3), sub(stem, 1, -4)
table.insert(data.categories, "Siwa l-declension " .. data.pos)
table.insert(data.categories, "Siwa l-declension " .. data.pos)
Line 722: 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 730: Line 837:
data.forms["m"] = {s1 .. "ri"}
data.forms["m"] = {s1 .. "ri"}
end
end
elseif stem:match("[eiyů]") then
elseif sv:match("[eiyů]$") then
if match("[ảẻỉỏủỷ]", sub(data.head, -1, -1)) then
if match("[ảẻỉỏủỷ]", sub(data.head, -1, -1)) then
data.forms["m"] = {s1 .. lts[sub(stem, -1, -1)] .. "la"}
data.forms["m"] = {s1 .. lts[sub(stem, -1, -1)] .. "la"}
Line 738: 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 744: Line 854:
params = {
params = {
[2] = {}, -- stressed vowel
[2] = {}, -- stressed vowel
["h"] = {}, -- Human
["h"] = {type = "boolean"}, -- Human
["av"] = {},
["t"] = {type = "boolean"}, -- extra T
["av"] = {type = "boolean"}, -- After Vowel
["s"] = {type = "boolean"},
["d"] = {type = "boolean"},
["i"] = {type = "boolean"}, -- -i Subgroup
},
},
}
}
Line 757: 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"}
data.forms["m_sg"] = {s2 .. (args.t and "t" or "") .. "ta"}
if stem ~= "totami" then table.insert(data.forms["m_sg"], s2 .. "tta") end
if stem:match(v.."..$") then table.insert(data.forms["m_sg"], s2 .. "tta") end
data.forms["u_pl"] = {stem .. "gi", s2 .. "mṡi", s2 .. "mhi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_pl"] = {s2 .. "tagi", s2 .. "ttagi"}
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
data.forms["m_sg"] = {s2 .. "umi"}
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["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
if stem:match("[bp].$") then table.insert(data.forms["u_pl"], s2 .. "bṡi") end
if stem:match(v.."[bp].$") then table.insert(data.forms["u_pl"], s2 .. "bṡi") end
data.forms["m_pl"] = {s2 .. "umṡi"}
data.forms["m_pl"] = {repl .. "umṡi"}
elseif stem:match("[bpv]o$") then
elseif stem:match("[bpv]o$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
Line 781: 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"}
data.forms["m_sg"] = {s2 .. "vva", s2 .. "ųa", s2 .. "va"}
if stem:match(nv.."..$") and not stem:match("[tsḍlgġksṡrd]..$") then
data.forms["m_pl"] = {s2 .. "vvagi", s2 .. "ųagi", s2 .. "vagi"}
data.forms["m_sg"] = {s2 .. "ųa"}
data.forms["m_pl"] = {s2 .. "ųagi"}
else
data.forms["m_sg"] = {s2 .. (args.s and "v" or "") .."va"}
data.forms["m_pl"] = {s2 .. (args.s and "v" or "") .. "vagi"}
end
elseif stem:match("ni$") then
elseif stem:match("ni$") then
if av then
if av then
Line 790: 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 800: 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 807: 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 .. "tta"}
data.forms["m_sg"] = {s2 .. (av and "tta" or "ta")}
data.forms["m_pl"] = {s2 .. "ttagi"}
data.forms["m_pl"] = {s2 .. (av and "ttagi" or "tagi")}
elseif stem:match("ṡi$") then
elseif stem:match("ṡi$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
Line 820: 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 828: 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 846: 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("[iy]$") then
elseif stem:match("[iỉy]$") then
data.forms["u_pl"] = {stem .. "gi"}
data.forms["u_pl"] = {stem .. "gi"}
data.forms["m_sg"] = {s1 .. "tṡa"}
data.forms["m_sg"] = {s1 .. "tṡa"}
Line 859: Line 1,006:
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 877: Line 1,029:
data.decl_type = "irregular"
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {PAGENAME}
data.forms["u"] = {"bahhi"}
data.forms["m"] = {"baski"}
data.forms["m"] = {"baski"}
end
end


data["bahhįo"] = function(args, data)
data["bahpa"] = function(args, data)
data.decl_type = "dual"
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {PAGENAME}
data.forms["u_sg"] = {"bahhįo"}
data.forms["u_pl"] = {"bahpa"}
data.forms["u_pl"] = {"bahpa"}
data.forms["m_sg"] = {"baġa"}
data.forms["m_sg"] = {"baġa"}
data.forms["m_pl"] = data.forms["m_sg"]
data.forms["m_pl"] = data.forms["m_sg"]
end
data["totami"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {PAGENAME}
data.forms["u_pl"] = {"totamṡi"}
data.forms["m_sg"] = {"todatta"}
data.forms["m_pl"] = {"todattagi"}
end
end


Line 902: Line 1,045:
data.decl_type = "irregular"
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {PAGENAME}
data.forms["u"] = {"boġġi"}
data.forms["m"] = {"boġġo"}
data.forms["m"] = {"boġġo"}
end
end
Line 909: Line 1,052:
data.decl_type = "irregular"
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {PAGENAME}
data.forms["u"] = {"bủtni"}
data.forms["m"] = {"bủtnỉd"}
data.forms["m"] = {"bủtnỉd"}
data.forms["ine"] = {"bủtnỉa", "bủtnidia"}
data.forms["ine"] = {"bủtnỉa", "bủtnidia"}
data.forms["ill"] = {"bủtnihta"}
data.forms["ill"] = {"bủtnihta"}
data.forms["ela"] = {"bủtnỉhka"}
data.forms["ela"] = {"bủtnihka"}
data.forms["ade"] = {"bủtnỉhma"}
data.forms["ade"] = {"bủtnihma"}
data.forms["all"] = {"bủtniddįibma", "bủtnibma"}
data.forms["all"] = {"bủtniddįibma", "bủtnibma"}
data.forms["ine"] = {"bủtniddįiska", "bủtniska"}
data.forms["abl"] = {"bủtniddįiska", "bủtniska"}
end
 
data["bỷ"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {"bỷ"}
data.forms["m"] = {"bůbů"}
end
 
data["dapsa"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"dapsa"}
data.forms["u_pl"] = {"dapsagi"}
data.forms["m_sg"] = {"daḍḍa"}
data.forms["m_pl"] = {"daḍḍagi"}
end
 
data["dirva"] = function(args, data)
data.decl_type = "i"
table.insert(data.categories, "Siwa i-declension nouns")
data.forms["u"] = {"dirva"}
data.forms["m"] = {"dirdi", "dihdi"}
end
 
data["ebo"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ebo"}
data.forms["m"] = {"ivve", "iobi"}
data.forms["ine"] = {"ivveia", "iobia"}
data.forms["ill"] = {"ivveita", "iobita"}
data.forms["ela"] = {"ivveika", "iobika"}
data.forms["ade"] = {"ivveima", "iobima"}
data.forms["all"] = {"ivveibma", "iobibma"}
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
 
data["ẻgi"] = function(args, data)
data.decl_type = "e"
table.insert(data.categories, "Siwa e-declension nouns")
data.forms["u"] = {"ẻgi"}
data.forms["m"] = {"egįegi"}
end
 
data["ẻu"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ẻu"}
data.forms["m"] = {"ůbů"}
end
 
data["ẻulbi"] = function(args, data)
data.decl_type = "y"
table.insert(data.categories, "Siwa y-declension nouns")
data.forms["u"] = {"ẻulbi"}
data.forms["m"] = {"ẻulbimo"}
data.forms["ill"] = {"ẻulbimoita"}
data.forms["abl"] = {"ẻulbimoiska"}
data.forms["ade"] = {"ẻulbimoima"}
data.forms["all"] = {"ẻulbimoibma"}
data.forms["ine"] = {"ẻulbimoįa"}
data.forms["ela"] = {"ẻulbimoika"}
end
 
data["eulhi"] = function(args, data)
data.forms["u_pl"] = {"eulhi"}
data.forms["m_pl"] = {"eultṡagi"}
end
 
data["gảgi"] = function(args, data)
data.decl_type = "a"
table.insert(data.categories, "Siwa a-declension nouns")
data.forms["u"] = {"gảgi"}
data.forms["m"] = {"gęįagi"}
end
 
data["gųesi"] = function(args, data)
data.decl_type = "e"
table.insert(data.categories, "Siwa irregular nouns")
table.insert(data.categories, "Siwa e-declension nouns")
data.forms["u"] = {"gųesi"}
data.forms["m"] = {"gųesse"}
loc = "gųessei"
data.forms["ine"] = {loc .. ce[1]}
data.forms["ill"] = {loc .. ce[2]}
data.forms["ela"] = {loc .. ce[3]}
data.forms["ade"] = {loc .. ce[4]}
data.forms["all"] = {loc .. ce[5]}
data.forms["abl"] = {loc .. ce[6]}
end
 
data["goi"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"goi"}
data.forms["m"] = {"goįo"}
end
 
data["ġey"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ġey"}
data.forms["m"] = {"ġůbů"}
end
 
data["hai"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"hai"}
data.forms["m"] = {"hagįa"}
end
 
data["hie"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"hie"}
data.forms["m"] = {"hiddįi"}
end
 
data["hỏ"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"hỏ"}
data.forms["m"] = {"hobo"}
end
 
data["hůpṡi"] = function(args, data)
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"hůpṡi"}
data.forms["u_pl"] = {"hůpṡigi", "hůpṡęgi"}
data.forms["m_sg"] = {"hůppohta"}
data.forms["m_pl"] = {"hůppohtagi"}
end
 
data["įảlhi"] = function(args, data)
data.forms["u_pl"] = {"įảlhi"}
data.forms["m_pl"] = {"įảltṡagi"}
end
 
data["iḍmi"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"iḍmi"}
data.forms["u_pl"] = {"iḍmigi", "iḍmęgi"}
data.forms["m_sg"] = {"iḍḍa", "iḍḍetta", "iḍḍutta"}
data.forms["m_pl"] = {"iḍḍagi", "iḍḍettagi", "iḍḍutagi"}
end
 
data["ie"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ie"}
data.forms["m"] = {"iddįi"}
end
 
data["ỉksả"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"ỉksả"}
data.forms["m"] = {"ỉgsęgįi"}
end
 
data["ỉṡpa"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_pl"] = {"ỉṡpa"}
data.forms["m_pl"] = {"ỉṡva"}
end
 
data["ilkima"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_pl"] = {"ilkima"}
data.forms["m_pl"] = {"ilkia"}
end
 
data["ỉskanhi"] = function(args, data)
data.forms["u_pl"] = {"ỉskanhi"}
data.forms["m_pl"] = {"ỉskaįagi"}
end
 
data["iu"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"iu"}
data.forms["m"] = {"ibi"}
end
 
data["kei"] = function(args, data)
data.decl_type = "coalescence"
table.insert(data.categories, "Siwa diphthong-coalescence nouns")
data.forms["u"] = {"kei"}
data.forms["m"] = {"keįe"}
end
 
data["keiḍgi"] = function(args, data)
data.forms["u_sg"] = {"keiḍgi"}
data.forms["u_pl"] = {"keiḍḍįa"}
data.forms["m_sg"] = {"keihtṡa"}
data.forms["m_pl"] = {"keihtṡagi"}
end
 
data["kelba"] = function(args, data)
data.decl_type = "dual"
table.insert(data.categories, "Siwa dual nouns")
data.forms["u_sg"] = {"ketku"}
data.forms["u_pl"] = {"kelba"}
data.forms["m_sg"] = {"ketkume"}
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
 
data["kengi"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u"] = {"kengi"}
data.forms["m"] = {"kenda"}
data.forms["ill"] = {"kendaita"}
data.forms["abl"] = {"kendaiska"}
data.forms["ade"] = {"kendaima"}
data.forms["all"] = {"kendaibma"}
data.forms["ine"] = {"kendaįa"}
data.forms["ela"] = {"kendaika"}
data.forms["u_sg"] = {"kengi"}
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
 
data["netsengųesi"] = function(args, data)
data.decl_type = "e"
table.insert(data.categories, "Siwa irregular nouns")
table.insert(data.categories, "Siwa e-declension nouns")
data.forms["u"] = {"netsengųesi"}
data.forms["m"] = {"netsengųesse"}
loc = "netsengųessei"
data.forms["ine"] = {loc .. ce[1]}
data.forms["ill"] = {loc .. ce[2]}
data.forms["ela"] = {loc .. ce[3]}
data.forms["ade"] = {loc .. ce[4]}
data.forms["all"] = {loc .. ce[5]}
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
 
data["totami"] = function(args, data)
data.decl_type = "irregular"
table.insert(data.categories, "Siwa irregular nouns")
data.forms["u_sg"] = {"totami"}
data.forms["u_pl"] = {"totamṡi"}
data.forms["m_sg"] = {"todatta"}
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