Module:Sandbox/Corbariano/learningtest/sandbox

local p = {} function p.salam(frame) do local t = {} -- perfect conjugations ገበረ t[1] = string.format("mə %s %sa %s", frame.args[1], frame.args[2], frame.args[3]) t[2] = string.format("%sä %sä %s ku",frame.args[1], frame.args[2], frame.args[3]) t[3] = string.format("%sä %sä %s na",frame.args[1], frame.args[2], frame.args[3]) t[4] = string.format("%sä %sä %s ka",frame.args[1], frame.args[2], frame.args[3]) t[5] = string.format("%sä %sä %s kum",frame.args[1], frame.args[2], frame.args[3]) t[6] = string.format("%sä %sä %s ki",frame.args[1], frame.args[2], frame.args[3]) t[7] = string.format("%sä %sä %s kən",frame.args[1], frame.args[2], frame.args[3]) t[8] = string.format("%sä %sä %sä",frame.args[1], frame.args[2], frame.args[3]) t[9] = string.format("%sä %sä %su",frame.args[1], frame.args[2], frame.args[3]) t[10] = string.format("%sä %sä %sä t",frame.args[1], frame.args[2], frame.args[3]) t[11] = string.format("%sä %sä %sa",frame.args[1], frame.args[2], frame.args[3]) --gerundive conjugations ገቢሩ t[12] = string.format("%sä %si %sä",frame.args[1], frame.args[2], frame.args[3]) t[13] = string.format("%sä %si %s na",frame.args[1], frame.args[2], frame.args[3]) t[14] = string.format("%sä %si %s ka",frame.args[1], frame.args[2], frame.args[3]) t[15] = string.format("%sä %si %s kum",frame.args[1], frame.args[2], frame.args[3]) t[16] = string.format("%sä %si %s ki",frame.args[1], frame.args[2], frame.args[3]) t[17] = string.format("%sä %si %s kən",frame.args[1], frame.args[2], frame.args[3]) t[18] = string.format("%sä %si %su",frame.args[1], frame.args[2], frame.args[3]) t[19] = string.format("%sä %si %som",frame.args[1], frame.args[2], frame.args[3]) t[20] = string.format("%sä %si %sa",frame.args[1], frame.args[2], frame.args[3]) t[21] = string.format("%sä %si %sän",frame.args[1], frame.args[2], frame.args[3]) --imperfect conjugations ይገብር t[22] = string.format("ʾə %sä %s %sə %s",frame.args[1], frame.args[2], frame.args[2], frame.args[3]) t[23] = string.format("nə %sä %s %sə %s",frame.args[1], frame.args[2], frame.args[2], frame.args[3]) t[24] = string.format("tə %sä %s %sə %s",frame.args[1], frame.args[2], frame.args[2], frame.args[3]) t[25] = string.format("tə %sä %s %su",frame.args[1], frame.args[2], frame.args[3]) t[26] = string.format("tə %sä %s %si",frame.args[1], frame.args[2], frame.args[3]) t[27] = string.format("tə %sä %s %sa",frame.args[1], frame.args[2], frame.args[3]) t[28] = string.format("yə %sä %s %sə %s",frame.args[1], frame.args[2], frame.args[2], frame.args[3]) t[29] = string.format("yə %sä %s %su",frame.args[1], frame.args[2], frame.args[3]) t[30] = string.format("tə %sä %s %sə %s",frame.args[1], frame.args[2], frame.args[2], frame.args[3]) t[31] = string.format("yə %sä %s %sa",frame.args[1], frame.args[2], frame.args[3]) --jussive conjugations ይግበር t[32] = string.format("ʾə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[33] = string.format("nə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[34] = string.format("tə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[35] = string.format("tə %s %sä %su", frame.args[1], frame.args[2], frame.args[3]) t[36] = string.format("tə %s %sä %si", frame.args[1], frame.args[2], frame.args[3]) t[37] = string.format("tə %s %sä %sa", frame.args[1], frame.args[2], frame.args[3]) t[38] = string.format("yə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[39] = string.format("yə %s %sä %su", frame.args[1], frame.args[2], frame.args[3]) t[40] = string.format("tə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[41] = string.format("yə %s %sä %sa", frame.args[1], frame.args[2], frame.args[3]) --affirmative command conjugations ግበር t[42] = string.format("%sə %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[43] = string.format("%sə %sä %su", frame.args[1], frame.args[2], frame.args[3]) t[44] = string.format("%sə %sä %si", frame.args[1], frame.args[2], frame.args[3]) t[45] = string.format("%sə %sä %sa", frame.args[1], frame.args[2], frame.args[3]) --negative command conjugations t[46] = string.format("ʾa y tə %s %sä %s", frame.args[1], frame.args[2], frame.args[3]) t[47] = string.format("ʾa y tə %s %sä %su", frame.args[1], frame.args[2], frame.args[3]) t[48] = string.format("ʾa y tə %s %sä %si", frame.args[1], frame.args[2], frame.args[3]) t[49] = string.format("ʾa y tə %s %sä %sa", frame.args[1], frame.args[2], frame.args[3]) --t[22] = mw.ustring.gsub(t[22], "(%bbb)", function(a) return mw.ustring.sub(a,1,1) end) local tm = {} for var=1,49,1 do			tm[var] = mw.ustring.gsub(t[var], "(%bhh)", function(a) return mw.ustring.sub(a,1,1) end) --not actually used, doesn't double tm[var] = mw.ustring.gsub(tm[var], "(%bll)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bḥḥ)", function(a) return mw.ustring.sub(a,1,1) end) --not used, the other letters that don't double won't appear tm[var] = mw.ustring.gsub(tm[var], "(%bss)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bšš)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bḳḳ)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bbb)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%btt)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bnn)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bkk)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bxx)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bww)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bzz)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%byy)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bdd)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bǧǧ)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bgg)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bṭṭ)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bčč)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bṣṣ)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bff)", function(a) return mw.ustring.sub(a,1,1) end) tm[var] = mw.ustring.gsub(tm[var], "(%bḳʰ)", function(a) return mw.ustring.sub(a,1,2) end) end -- consonant characters that hypothetically double in verbs: hlḥsšḳʰbtnʾkxwʿzydǧgṭčṣf local rtr = { ["hä"]="ሀ", ["hu"]="ሁ", ["hi"]="ሂ", ["ha"]="ሃ", ["he"]="ሄ", ["hə"]="ህ", ["ho"]="ሆ", ["h"]="ህ", ["lä"]="ለ", ["lu"]="ሉ", ["li"]="ሊ", ["la"]="ላ", ["le"]="ሌ", ["lə"]="ል", ["lo"]="ሎ", ["lʷa"]="ሏ", ["l"]="ል", ["ḥä"]="ሐ", ["ḥu"]="ሑ", ["ḥi"]="ሒ", ["ḥa"]="ሓ", ["ḥe"]="ሔ", ["ḥə"]="ሕ", ["ḥo"]="ሖ", ["ḥʷa"]="ሗ", ["ḥ"]="ሕ", ["mä"]="መ", ["mu"]="ሙ", ["mi"]="ሚ", ["ma"]="ማ", ["me"]="ሜ", ["mə"]="ም", ["mo"]="ሞ", ["mʷa"]="ሟ", ["mʲä"]="ፙ", ["rä"]="ረ", ["ru"]="ሩ", ["ri"]="ሪ", ["ra"]="ራ", ["re"]="ሬ", ["rə"]="ር", ["ro"]="ሮ", ["rʷa"]="ሯ", ["rʲä"]="ፘ", ["sä"]="ሰ", ["su"]="ሱ", ["si"]="ሲ", ["sa"]="ሳ", ["se"]="ሴ", ["sə"]="ስ", ["so"]="ሶ", ["sʷa"]="ሷ", ["šä"]="ሸ", ["šu"]="ሹ", ["ši"]="ሺ", ["ša"]="ሻ", ["še"]="ሼ", ["šə"]="ሽ", ["šo"]="ሾ", ["šʷa"]="ሿ", ["ḳä"]="ቀ", ["ḳu"]="ቁ", ["ḳi"]="ቂ", ["ḳa"]="ቃ", ["ḳe"]="ቄ", ["ḳə"]="ቅ", ["ḳo"]="ቆ", ["ḳʷä"]="ቈ", ["ḳʷi"]="ቊ", ["ḳʷa"]="ቋ", ["ḳʷe"]="ቌ", ["ḳʷə"]="ቍ", ["ḳʰä"]="ቐ", ["ḳʰu"]="ቑ", ["ḳʰi"]="ቒ", ["ḳʰa"]="ቓ", ["ḳʰe"]="ቔ", ["ḳʰə"]="ቕ", ["ḳʰo"]="ቖ", ["ḳʰʷä"]="ቘ", ["ḳʰʷi"]="ቚ", ["ḳʰʷa"]="ቛ", ["ḳʰʷe"]="ቜ", ["ḳʰʷə"]="ቝ", ["bä"]="በ", ["bu"]="ቡ", ["bi"]="ቢ", ["ba"]="ባ", ["be"]="ቤ", ["bə"]="ብ", ["bo"]="ቦ", ["bʷa"]="ቧ", ["tä"]="ተ", ["tu"]="ቱ", ["ti"]="ቲ", ["ta"]="ታ", ["te"]="ቴ", ["tə"]="ት", ["to"]="ቶ", ["tʷa"]="ቷ", ["nä"]="ነ", ["nu"]="ኑ", ["ni"]="ኒ", ["na"]="ና", ["ne"]="ኔ", ["nə"]="ን", ["no"]="ኖ", ["nʷa"]="ኗ", ["ʾä"]="አ", ["ʾu"]="ኡ", ["ʾi"]="ኢ", ["ʾa"]="ኣ", ["ʾe"]="ኤ", ["ʾə"]="እ", ["ʾo"]="ኦ", ["kä"]="ከ", ["ku"]="ኩ", ["ki"]="ኪ", ["ka"]="ካ", ["ke"]="ኬ", ["kə"]="ክ", ["ko"]="ኮ", ["kʷä"]="ኰ", ["kʷi"]="ኲ", ["kʷa"]="ኳ", ["kʷe"]="ኴ", ["kʷə"]="ኵ", ["xä"]="ኸ", ["xu"]="ኹ", ["xi"]="ኺ", ["xa"]="ኻ", ["xe"]="ኼ", ["xə"]="ኽ", ["xo"]="ኾ",  ["xʷə"]="ዅ", ["wä"]="ወ", ["wu"]="ዉ", ["wi"]="ዊ", ["wa"]="ዋ", ["we"]="ዌ", ["wə"]="ው", ["wo"]="ዎ", ["ʿä"]="ዐ", ["ʿu"]="ዑ", ["ʿi"]="ዒ", ["ʿa"]="ዓ", ["ʿe"]="ዔ", ["ʿə"]="ዕ", ["ʿo"]="ዖ", ["zä"]="ዘ", ["zu"]="ዙ", ["zi"]="ዚ", ["za"]="ዛ", ["ze"]="ዜ", ["zə"]="ዝ", ["zo"]="ዞ", ["zʷa"]="ዟ", ["yä"]="የ", ["yu"]="ዩ", ["yi"]="ዪ", ["ya"]="ያ", ["ye"]="ዬ", ["yə"]="ይ", ["yo"]="ዮ", ["dä"]="ደ", ["du"]="ዱ", ["di"]="ዲ", ["da"]="ዳ", ["de"]="ዴ", ["də"]="ድ", ["do"]="ዶ", ["dʷa"]="ዷ", ["ǧä"]="ጀ", ["ǧu"]="ጁ", ["ǧi"]="ጂ", ["ǧa"]="ጃ", ["ǧe"]="ጄ", ["ǧə"]="ጅ", ["ǧo"]="ጆ", ["ǧʷa"]="ጇ", ["gä"]="ገ", ["gu"]="ጉ", ["gi"]="ጊ", ["ga"]="ጋ", ["ge"]="ጌ", ["gə"]="ግ", ["go"]="ጎ", ["gʷä"]="ጐ", ["gʷi"]="ጒ", ["gʷa"]="ጓ", ["gʷe"]="ጔ", ["gʷə"]="ጕ", ["ṭä"]="ጠ", ["ṭu"]="ጡ", ["ṭi"]="ጢ", ["ṭa"]="ጣ", ["ṭe"]="ጤ", ["ṭə"]="ጥ", ["ṭo"]="ጦ", ["ṭʷa"]="ጧ", ["č̣ä"]="ጨ", ["č̣u"]="ጩ", ["č̣i"]="ጪ", ["č̣a"]="ጫ", ["č̣e"]="ጬ", ["č̣ə"]="ጭ", ["č̣o"]="ጮ", ["č̣ʷa"]="ጯ", ["ṣä"]="ጸ", ["ṣu"]="ጹ", ["ṣi"]="ጺ", ["ṣa"]="ጻ", ["ṣe"]="ጼ", ["ṣə"]="ጽ", ["ṣo"]="ጾ", ["ṣʷa"]="ጿ", ["fä"]="ፈ", ["fu"]="ፉ", ["fi"]="ፊ", ["fa"]="ፋ", ["fe"]="ፌ", ["fə"]="ፍ", ["fo"]="ፎ", ["fʷa"]="ፏ", ["fʲä"]="ፚ", ["m"]="ም", ["r"]="ር", ["s"]="ስ", ["š"]="ሽ",["ḳ"]="ቅ", ["ḳʰ"]="ቕ", ["b"]="ብ", ["t"]="ት", ["n"]="ን", ["ʾ"]="እ", ["k"]="ክ", ["x"]="ኽ", ["w"]="", ["ʿ"]="ዕ", ["z"]="ዝ", ["y"]="ይ", ["d"]="ድ", ["ǧ"]="ጅ", ["g"]="ግ", ["ṭ"]="ጥ", ["č̣"]="ጭ", ["ṣ"]="ጽ", ["f"]="ፍ", }		local tf = {} for var=1,49,1 do		tf[var] = mw.ustring.gsub(tm[var], "%a%a", rtr) tf[var] = mw.ustring.gsub(tf[var],".", rtr) tf[var] = mw.ustring.gsub(tf[var], "%s+", "") t[var] = mw.ustring.gsub(t[var], "%s+","") end return string.format("| infinitive = %s\n",tf[1]), string.format("| perfect_1s = %s\n",tf[2]), string.format("| perfect_1p = %s\n",tf[3]), string.format("| perfect_2sm = %s\n",tf[4]), string.format("| perfect_2pm = %s\n",tf[5]), string.format("| perfect_2sf = %s\n",tf[6]), string.format("| perfect_2pf = %s\n",tf[7]), string.format("| perfect_3sm = %s\n",tf[8]), string.format("| perfect_3pm = %s\n",tf[9]), string.format("| perfect_3sf = %s\n",tf[10]), string.format("| perfect_3pf = %s\n",tf[11]), string.format("| gerundive_1s = %s\n",tf[12]), string.format("| gerundive_1p = %s\n",tf[13]), string.format("| gerundive_2sm = %s\n",tf[14]), string.format("| gerundive_2pm = %s\n",tf[15]), string.format("| gerundive_2sf = %s\n",tf[16]), string.format("| gerundive_2pf = %s\n",tf[17]), string.format("| gerundive_3sm = %s\n",tf[18]), string.format("| gerundive_3pm = %s\n",tf[19]), string.format("| gerundive_3sf = %s\n",tf[20]), string.format("| gerundive_3pf = %s\n",tf[21]), string.format("| imperfect_1s = %s\n",tf[22]), string.format("| imperfect_1p = %s\n",tf[23]), string.format("| imperfect_2sm = %s\n",tf[24]), string.format("| imperfect_2pm = %s\n",tf[25]), string.format("| imperfect_2sf = %s\n",tf[26]), string.format("| imperfect_2pf = %s\n",tf[27]), string.format("| imperfect_3sm = %s\n",tf[28]), string.format("| imperfect_3pm = %s\n",tf[29]), string.format("| imperfect_3sf = %s\n",tf[30]), string.format("| imperfect_3pf = %s\n",tf[31]), string.format("| jussive_1s = %s\n",tf[32]), string.format("| jussive_1p = %s\n",tf[33]), string.format("| jussive_2sm = %s\n",tf[34]), string.format("| jussive_2pm = %s\n",tf[35]), string.format("| jussive_2sf = %s\n",tf[36]), string.format("| jussive_2pf = %s\n",tf[37]), string.format("| jussive_3sm = %s\n",tf[38]), string.format("| jussive_3pm = %s\n",tf[39]), string.format("| jussive_3sf = %s\n",tf[40]), string.format("| jussive_3pf = %s\n",tf[41]), string.format("| imperative_2sm = %s\n",tf[42]), string.format("| imperative_2pm = %s\n",tf[43]), string.format("| imperative_2sf = %s\n",tf[44]), string.format("| imperative_2pf = %s\n",tf[45]), string.format("| imperative_2smN = %s\n",tf[46]), string.format("| imperative_2pmN = %s\n",tf[47]), string.format("| imperative_2sfN = %s\n",tf[48]), string.format("| imperative_2pfN = %s\n",tf[49]) end end return p