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


local p = {}
local frame = mw.getCurrentFrame()
local forms = require("Module:ks-conj-pa")
local  vowels = {
	"َ",
	"اَ",
	"ا",
	"آ",
	"ٔ",
	"ٲ",
	"ُ",
	"وٗ",
	"ۆ",
	"و",
	"ِ", 
	"ی", 
	"یٖ",
	"ؠ",
}

function p.endswith_vow(str)
	if #str > 2 then
		for _, v in ipairs(vowels) do
			if mw.ustring.match(str, v .. "$") then
				return true
			end
		end
	end
	return false
end

function p.tab_from_str(str)
	local out = {}
	local syl = ""
	local length = mw.ustring.len(str)
	for i = 1, length do
    	local c = mw.ustring.sub(str, i, i)
    	syl = syl .. c
    	if forms.contains_val(vowels, c) then
    		if #syl > 2 or c == "آ" or i == length then
    			local add = mw.ustring.gsub(syl, "",{ = "ے" ,  = "ےٚ"	})
    			table.insert(out, add)
    			syl = ""
    		end
    	elseif length == i then
    		local add = mw.ustring.gsub(syl, "",{ = "ے" ,  = "ےٚ"	})
    		table.insert(out, add)
    	end
	end
	return out
end

function p.getstem(params)
	local inf = frame:getParent().args
	if not inf then
		inf = params.args.title
	end
	local inf_endings = {
		 = "ِ",
		 = "ِ",
		 = "ؠ",
		 = "",
	}
	for ending, repl in pairs(inf_endings) do
		if mw.ustring.match(inf, ending.."$") then
			return p.tab_from_str(mw.ustring.gsub(inf, ending.."$", repl))
		end
	end
	return inf
end

function p.show(params)
	local stem = p.getstem(params)
	local vow = p.endswith_vow(stem)
	local nom = forms.contains_val(frame:getParent().args, "nom")
	local trans = forms.contains_val(frame:getParent().args, "trans")
	local return_keys
	if nom then
		return_keys = {"impf", "cp", "cpn",
			"msgptc", "mplptc", "fsgptc", "fplptc", 
			"fut1ps", "fut2ps", "fut3ps", "fut1pp", "fut2pp", "fut3pp",
			"pstm1ps", "pstm2ps", "pstm3ps", "pstm1pp", "pstm2pp", "pstm3pp",
			"pstf1ps", "pstf2ps", "pstf3ps", "pstf1pp", "pstf2pp", "pstf3pp",
			"cond1ps", "cond2ps", "cond3ps", "cond1pp", "cond2pp", "cond3pp",
			"impsims", "impsimp",
			"imppols", "imppolp",
			"impobls", "impoblp"
		}
	else
		return_keys = {"impf", "cp", "cpn",
		"msgptc", "mplptc", "fsgptc", "fplptc", 
		"fut1ps", "fut2ps", "fut3ps", "fut1pp", "fut2pp", "fut3pp",
		"pstmsg", "pstmpl", "pstfsg", "pstfpl", 
		"pst2psmsg", "pst2psmpl", "pst2psfsg", "pst2psfpl",
		"pst2ppmsg", "pst2ppmpl", "pst2ppfsg", "pst2ppfpl",
		"cond1ps", "cond2ps", "cond3ps", "cond1pp", "cond2pp", "cond3pp",
		"impsims", "impsimp",
		"imppols", "imppolp",
		"impobls", "impoblp"
		}
	end
	local f = { = stem,  = forms.rounded(stem),  = forms.centered(stem),  = forms.fem(stem),  = forms.fempl(stem)}
	local return_vals = {}
	if frame:getParent().args then
		return_vals = frame:getParent().args
	else
		return_vals = params.args.title
	end
	for _, key in ipairs(return_keys) do
		if frame:getParent().args then
			return_vals = frame:getParent().args
		else
			local infl = forms.inflection(key, stem, vow, f, nom, trans)
			if infl then return_vals = infl end
		end
	end
	if nom then
		return frame:expandTemplate({title = 'ks-conj-pa/nom', args = return_vals})
	else
		if trans then
			return frame:expandTemplate({title = 'ks-conj-pa/erg', args = return_vals})
		else
			return frame:expandTemplate({title = 'ks-conj-pa/erg-intrans', args = return_vals})
		end
	end
end
return p