Module:Sandbox/Corbariano/learningtest/sandbox

From English Wikipedia @ Freddythechick
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