Module:User:Dixtosa/ka-conjugation

local export = {}

local dbg = require("Module:debug") local strutils = require("Module:string utilities") local conjugationTable = require("Module:User:Dixtosa/ka-conjugation/conjugation table") -- Module:User:Dixtosa/ka-conjugation/conjugation table

-- Within this module, conjugation contain paradigms -- They are defined further down. local data = {}

--demistifying index -- screeve number = index // 6 -- person = (index % 6) % 3 -- singularity = (index % 6) / 3 --demistifying value. it is just a pair of prefix and suffix data["vavkz1.1"] = { screeves = { {p = "ვა", s = "ებ"}, {p = "ა", s = "ებ"}, {p = "ა", s = "ებს"}, {p = "ვა", s = "ებთ"}, {p = "ა", s = "ებთ"}, {p = "ა", s = "ებენ"}, {p = "ვა", s = "ებდი"}, {p = "ა", s = "ებდი"}, {p = "ა", s = "ებდა"}, {p = "ვა", s = "ებდით"}, {p = "ა", s = "ებდით"}, {p = "ა", s = "ებდნენ"}, {p = "ვა", s = "ებდე"}, {p = "ა", s = "ებდე"}, {p = "ა", s = "ებდეს"}, {p = "ვა", s = "ებდეთ"}, {p = "ა", s = "ებდეთ"}, {p = "ა", s = "ებდნენ"}, {p = "(ა)ვა", s = "ებ"}, {p = "(ა)ა", s = "ებ"}, {p = "(ა)ა", s = "ებს"}, {p = "(ა)ვა", s = "ებთ"}, {p = "(ა)ა", s = "ებთ"}, {p = "(ა)ა", s = "ებენ"}, {p = "(ა)ვა", s = "ებდი"}, {p = "(ა)ა", s = "ებდი"}, {p = "(ა)ა", s = "ებდა"}, {p = "(ა)ვა", s = "ებდით"}, {p = "(ა)ა", s = "ებდით"}, {p = "(ა)ა", s = "ებდნენ"}, {p = "(ა)ვა", s = "ებდე"}, {p = "(ა)ა", s = "ებდე"}, {p = "(ა)ა", s = "ებდეს"}, {p = "(ა)ვა", s = "ებდეთ"}, {p = "(ა)ა", s = "ებდეთ"}, {p = "(ა)ა", s = "ებდნენ"}, {p = "(ა)ვა", s = "ე"}, {p = "(ა)ა", s = "ე"}, {p = "(ა)ა", s = "ა"}, {p = "(ა)ვა", s = "ეთ"}, {p = "(ა)ა", s = "ეთ"}, {p = "(ა)ა", s = "ეს"}, {p = "(ა)ვა", s = "ო"}, {p = "(ა)ა", s = "ო"}, {p = "(ა)ა", s = "ოს"}, {p = "(ა)ვა", s = "ოთ"}, {p = "(ა)ა", s = "ოთ"}, {p = "(ა)ა", s = "ონ"}, {p = "(ა)მი", s = "ებია"}, {p = "(ა)გი", s = "ებია"}, {p = "(ა)უ", s = "ებია"}, {p = "(ა)გვი", s = "ებია"}, {p = "(ა)გი", s = "ებიათ"}, {p = "(ა)უ", s = "ებიათ"}, {p = "(ა)მე", s = "ებინა"}, {p = "(ა)გე", s = "ებინა"}, {p = "(ა)ე", s = "ებინა"}, {p = "(ა)გვე", s = "ებინა"}, {p = "(ა)გე", s = "ებინათ"}, {p = "(ა)ე", s = "ებინათ"}, {p = "(ა)მე", s = "ებინოს"}, {p = "(ა)გე", s = "ებინოს"}, {p = "(ა)ე", s = "ებინოს"}, {p = "(ა)გვე", s = "ებინოს"}, {p = "(ა)გე", s = "ებინოთ"}, {p = "(ა)ე", s = "ებინოთ"} },	imperative = , leftStripLemmaSize = 1, rightStripLemmaSize = 3 }

data["veba1.5"] = { screeves = { {p = "ვა", s = "ებ"}, {p = "ა", s = "ებ"}, {p = "ა", s = "ებს"}, {p = "ვა", s = "ებთ"}, {p = "ა", s = "ებთ"}, {p = "ა", s = "ებენ"}, {p = "ვა", s = "ებდი"}, {p = "ა", s = "ებდი"}, {p = "ა", s = "ებდა"}, {p = "ვა", s = "ებდით"}, {p = "ა", s = "ებდით"}, {p = "ა", s = "ებდნენ"}, {p = "ვა", s = "ებდე"}, {p = "ა", s = "ებდე"}, {p = "ა", s = "ებდეს"}, {p = "ვა", s = "ებდეთ"}, {p = "ა", s = "ებდეთ"}, {p = "ა", s = "ებდნენ"}, {p = "ავა", s = "ებ"}, {p = "აა", s = "ებ"}, {p = "აა", s = "ებს"}, {p = "ავა", s = "ებთ"}, {p = "აა", s = "ებთ"}, {p = "აა", s = "ებენ"}, {p = "ავა", s = "ებდი"}, {p = "აა", s = "ებდი"}, {p = "აა", s = "ებდა"}, {p = "ავა", s = "ებდით"}, {p = "აა", s = "ებდით"}, {p = "აა", s = "ებდნენ"}, {p = "ავა", s = "ებდე"}, {p = "აა", s = "ებდე"}, {p = "აა", s = "ებდეს"}, {p = "ავა", s = "ებდეთ"}, {p = "აა", s = "ებდეთ"}, {p = "აა", s = "ებდნენ"}, {p = "ავა", s = "ე"}, {p = "აა", s = "ე"}, {p = "აა", s = "ა"}, {p = "ავა", s = "ეთ"}, {p = "აა", s = "ეთ"}, {p = "აა", s = "ეს"}, {p = "ავა", s = "ო"}, {p = "აა", s = "ო"}, {p = "აა", s = "ოს"}, {p = "ავა", s = "ოთ"}, {p = "აა", s = "ოთ"}, {p = "აა", s = "ონ"}, {p = "ამი", s = "ებია"}, {p = "აგი", s = "ებია"}, {p = "აუ", s = "ებია"}, {p = "აგვი", s = "ებია"}, {p = "აგი", s = "ებიათ"}, {p = "აუ", s = "ებიათ"}, {p = "ამე", s = "ებინა"}, {p = "აგე", s = "ებინა"}, {p = "აე", s = "ებინა"}, {p = "აგვე", s = "ებინა"}, {p = "აგე", s = "ებინათ"}, {p = "აე", s = "ებინათ"}, {p = "ამე", s = "ებინოს"}, {p = "აგე", s = "ებინოს"}, {p = "აე", s = "ებინოს"}, {p = "აგვე", s = "ებინოს"}, {p = "აგე", s = "ებინოთ"}, {p = "აე", s = "ებინოთ"}}, imperative = , leftStripLemmaSize = 1, rightStripLemmaSize = 3 }

data["vialz1.9"] = { screeves = {{p = "ვ", s = "ი"}, {p = "", s = "ი"}, {p = "", s = "ის"}, {p = "ვ", s = "ით"}, {p = "", s = "ით"}, {p = "", s = "იან"}, {p = "ვ", s = "იდი"}, {p = "", s = "იდი"}, {p = "", s = "იდა"}, {p = "ვ", s = "იდით"}, {p = "", s = "იდით"}, {p = "", s = "იდნენ"}, {p = "ვ", s = "იდე"}, {p = "", s = "იდე"}, {p = "", s = "იდეს"}, {p = "ვ", s = "იდეთ"}, {p = "", s = "იდეთ"}, {p = "", s = "იდნენ"}, {p = "გავ", s = "ი"}, {p = "გა", s = "ი"}, {p = "გა", s = "ის"}, {p = "გავ", s = "ით"}, {p = "გა", s = "ით"}, {p = "გა", s = "იან"}, {p = "გავ", s = "იდი"}, {p = "გა", s = "იდი"}, {p = "გა", s = "იდა"}, {p = "გავ", s = "იდით"}, {p = "გა", s = "იდით"}, {p = "გა", s = "იდნენ"}, {p = "გავ", s = "იდე"}, {p = "გა", s = "იდე"}, {p = "გა", s = "იდეს"}, {p = "გავ", s = "იდეთ"}, {p = "გა", s = "იდეთ"}, {p = "გა", s = "იდნენ"}, {p = "გავ", s = "ე"}, {p = "გა", s = "ე"}, {p = "გა", s = "ა"}, {p = "გავ", s = "ეთ"}, {p = "გა", s = "ეთ"}, {p = "გა", s = "ეს"}, {p = "გავ", s = "ო"}, {p = "გა", s = "ო"}, {p = "გა", s = "ოს"}, {p = "გავ", s = "ოთ"}, {p = "გა", s = "ოთ"}, {p = "გა", s = "ონ"}, {p = "გამი", s = "ია"}, {p = "გაგი", s = "ია"}, {p = "გაუ", s = "ია"}, {p = "გაგვი", s = "ია"}, {p = "გაგი", s = "იათ"}, {p = "გაუ", s = "იათ"}, {p = "გამე", s = "ა"}, {p = "გაგე", s = "ა"}, {p = "გაე", s = "ა"}, {p = "გაგვე", s = "ა"}, {p = "გაგე", s = "ათ"}, {p = "გაე", s = "ათ"}, {p = "გამე", s = "ოს"}, {p = "გაგე", s = "ოს"}, {p = "გაე", s = "ოს"}, {p = "გაგვე", s = "ოს"}, {p = "გაგე", s = "ოთ"}, {p = "გაე", s = "ოთ"}}, imperative = , leftStripLemmaSize = 0, rightStripLemmaSize = 2 }

local screeves = { ["present"] = 1, ["imperfect"] = 2, ["present subjunctive"] = 3, ["future"] = 4, ["conditional"] = 5, ["future subjunctive"] = 6, ["aorist"] = 7, ["optative"] = 8, ["perfect"] = 9, ["pluperfect"] = 10, ["perfect subjunctive"] = 11 }

function getAffixes(conj, formName, person, number) local index = (screeves[formName] - 1) * 6 if number == "pl" then index = index + 3 end index = index + person - 1 --mw.log(index) return conj["screeves"][index + 1] end

forms = {} function applyConjugation(conj, lemma) local stem = mw.ustring.sub(lemma, 1 + conj.leftStripLemmaSize, mw.ustring.len(lemma) - conj.rightStripLemmaSize) forms["lemma"] = lemma forms["perfective verbal noun"] = "" forms["imperfective verbal noun"] = "" forms["imperative2sg"] = "" forms["imperative3sg"] = "" forms["imperative2pl"] = "" forms["imperative3pl"] = "" for screeve, _ in pairs(screeves) do		for _, person in ipairs({1, 2, 3}) do 			for _, number in ipairs({"sg", "pl"}) do				local affixes = getAffixes(conj, screeve, person, number) local prefix = affixes.p;				local suffix = affixes.s; local name = screeve .. person .. number forms[name] = prefix .. stem .. suffix end end end end

-- The main entry point. -- This is the only function that can be invoked from a template. function export.main(frame) local args = frame:getParent.args local class = args["1"] lemma = args.term or mw.title.getCurrentTitle.text --PAGENAME applyConjugation(data[class], lemma) --return dbg.dump(forms) return strutils.format(conjugationTable.template, forms) end

return export