Ҷаҳиш ба мӯҳтаво

Модул:homophones

Аз Wiktionary

Documentation for this module may be created at Модул:homophones/doc

local export = {}

local m_links = require("Module:links")

function export.show(frame)
	local args = frame:getParent().args
	local lang = args["lang"]; if lang == "" then lang = nil end
	
	if not lang then
		lang = "en"
	end
	
	lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
	
	local text = ""
	local terms = {} -- зеро аст
	
	--кунад, сатри холӣ, агар мӯҳлати танҳо матни алтернативии вуҷуд дорад
	for name, parameter in pairs(args) do
		local regex = mw.ustring.match(tostring(name),"^alt%d+$")
		
		if regex then
			local index = tonumber((name:gsub("alt", "")))
			
			if not args[index] then
				terms[index] = ""
			end
		end
	end
	
	--нусха ҳама параметрҳои номаш ба он калимае
	for i, param in ipairs(args) do
		terms[i] = param
	end
	
	--main process
	local comma = false
	local count = 0
	
	for i, parameter in ipairs(terms) do
		count = count + 1
		
		if comma then
			text = text .. ", "
		else
			comma = true
		end
		
		local alt = args["alt" .. tostring(i)]
		local tr = args["tr" .. tostring(i)]
		
		if parameter == "" then
			text = text .. alt
		else
			text = text .. m_links.full_link(parameter, alt, lang, nil, nil, nil, {tr = tr}, false)
		end
	end
	
	--return process
	if count > 1 then --илова кардани "s" то "омофон" агар беш аз як замоне муайян
		return "Омофон: " .. text
	elseif count == 1 then --нест "s" агар як замоне муайян
		return "Омофон: " .. text
	end
	
	--Агар нест, замоне муайян дар ҳама баргардонед матн пешфарз агар Фазоином Шаблон аст
	if mw.title.getCurrentTitle().nsText == "Шаблон" then
		return "Омофон: [[term#English|мӯҳлат]]"
	end
	
	--Агар ин хати захира аст, ягон шартҳои дар ҳама ҷо ва кушодро аст Шаблон нест
	error("Лутфан, ақаллан як омофон таъмин намояд.")
end

return export