Module:User:ObnoxiousCoder/hit-conj/mi

Hello, you have come here looking for the meaning of the word Module:User:ObnoxiousCoder/hit-conj/mi. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:User:ObnoxiousCoder/hit-conj/mi, but we will also tell you about its etymology, its characteristics and you will know how to say Module:User:ObnoxiousCoder/hit-conj/mi in singular and plural. Everything you need to know about the word Module:User:ObnoxiousCoder/hit-conj/mi you have here. The definition of the word Module:User:ObnoxiousCoder/hit-conj/mi will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:User:ObnoxiousCoder/hit-conj/mi, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This is a private module sandbox of ObnoxiousCoder, for their own experimentation. Items in this module may be added and removed at ObnoxiousCoder's discretion; do not rely on this module's stability.


local hit = require("Module:User:ObnoxiousCoder/hit-common")

function consonant(stem1, stem2, vowel) 
	local weni = "uw"..vowel.."ni"
	local teni = "t"..vowel.."ni"

	local table = {
		nom = {
			inf = stem2.."anna", 
			part = stem2.."anz", 
			noun = stem2.."ātar", 
			su = stem1.."uan"
	
		},
		act = {
	          pre = {
	               =  stem1.."mi",
	               =  stem1.."ši",
	               =  stem1.."zzi",
	               =  stem2.."uweni",
	               =  stem2.."tteni",
	               =  stem2.."anzi",
	      },
	          aor = {
	               = stem1.."un",
	               = stem1.."t",
	               = stem1.."t",
	               = stem1.."uen",
	               = stem1.."tteni",
	               = stem1.."er",
	          },
	          imp = {
	               = stem2.."allu",
	               = stem1,
	               = stem1.."du",
	               = stem1.."uen",
	               = stem1.."tten",
	               = stem2.."andu",
	          }
	  },
	  mid = {
	       pre = {
	           = stem2.."ḫa(ri)",
	           = stem2.."tta(ri), "..stem2.."tta(ti)", 
	           = stem2.."a(ri), "..stem2.."ttari", 
	           = stem2.."uwasta",
	           = stem2.."ttuma",
	           = stem2.."anta(ri)",
	      },
	      aor = {
	           =  stem2.."ḫat",
	           =  stem2.."ttat",
	           =  stem2.."ttat",
	           =  stem2.."uastat",
	           =  stem2.."dumat",
	           =  stem2.."antat",
	      },
	      
	      imp = {
	           =  stem2.."ḫḫaḫaru",
	           =  stem2.."ḫut",
	           =  stem2.."aru, "..stem2.."ttaru",
	           =  stem2.."uwastat",
	           =  stem2.."dumat",
	           =  stem2.."antaru",
	      }
	  }
	}
	normalize_table(table)
	return table
end


function thematic(stem_e, stem_a, vowel) 
	local weni = "uw"..vowel.."ni"
	local teni = "tt"..vowel.."ni"

	local table = {
		nom = {
			inf = stem_a.."wanzi", 
			part = stem_a.."nz", 
			noun = stem_a.."war", 
			su = stem_a.."wan"
	
		},
		act = {
	          pre = {
	               =  stem_a.."mi",
	               =  stem_e.."ši",
	               =  stem_e.."zzi",
	               =  stem_a.."uweni",
	               =  stem_e.."tteni",
	               =  stem_a.."nzi",
	      },
	          aor = {
	               = stem_e.."un",
	               = stem_e.."t",
	               = stem_e.."t",
	               = stem_a.."uen",
	               = stem_e.."tteni, "..stem_a.."tteni",
	               = stem_e.."r",
	          },
	          imp = {
	               = stem_a.."llu",
	               = stem_e.."(t), "..stem_a.."(t)",
	               = stem_a.."du",
	               = stem_a.."uen",
	               = stem_e.."tten, "..stem_a.."tten",
	               = stem_a.."ndu",
	          }
	  },
	  mid = {
	       pre = {
	           = stem_a.."ḫḫa(ri)",
	           = stem_a.."tta(ri), "..stem_a.."tta(ti)", 
	           = stem_a.."(ri), "..stem_a.."ttari", 
	           = stem_a.."uwasta",
	           = stem_a.."ttuma",
	           = stem_a.."nta(ri)",
	      },
	      aor = {
	           =  stem_a.."ḫḫat",
	           =  stem_e.."ttat",
	           =  stem_e.."ttat",
	           =  stem_a.."uastat",
	           =  stem_e.."ddumat",
	           =  stem_a.."ntat",
	      },
	      
	      imp = {
	           =  stem_a.."ḫḫaḫaru",
	           =  stem_a.."ḫḫut",
	           =  stem_a.."ru, "..stem_a.."ttaru",
	           =  stem_a.."uwastat",
	           =  stem_a.."ddumat",
	           =  stem_a.."ntaru",
	      }
	  }
	}
	normalize_table(table)
	return table
end


function normalize_table(tbl)
    for key, value in pairs(tbl) do
        if type(value) == "string" then
            tbl = hit.normalize_geminates(value)
        elseif type(value) == "table" then
            normalize_table(value) 
        end
    end
end

return function (args)
	local stem1 = args
	local stem2 = args or stem1
	
	local ya_stem = mw.ustring.gmatch(stem1, "(.+)?a$")()
	local ye_stem = mw.ustring.gmatch(stem1, "(.+)?e$")()
	--local ess_stem = mw.ustring.gmatch(stem1, "(.+)ešš$")()
	--local ai_stem = mw.ustring.gmatch(stem1, "(.+)ai$")()
	--local a_stem = mw.ustring.gmatch(stem1, "(.+)e$")()
	--local e_stem = mw.ustring.gmatch(stem1, "(.+)e$")()
	--local nu_stem = mw.ustring.gmatch(stem1, "(.+)nu$")()
	
	if ya_stem or ye_stem then 
		local thematic_stem = ya_stem or ye_stem
		return thematic(thematic_stem..'ie', thematic_stem..'iya', 'e')
	end
	
	
	local vowel_broad = mw.ustring.match(stem1, "") and "a" or "e"
	
	return consonant(stem1, stem2, vowel_broad)
end