پودمان:Numeral converter

نسخهٔ تاریخ ‏۱۴ اوت ۲۰۲۵، ساعت ۱۵:۲۰ توسط fa>Jeeputer (باعث ایجاد «ارجاع مخفی» می‌شود که در متن موجود نیست، اما در پانویس دیده می‌شود)

توضیحات این پودمان می‌تواند در پودمان:Numeral converter/توضیحات قرار گیرد.

local p = {}
local lang = mw.language.new('fa')
-- Use this function from templates.
function p.convert_template(frame)
	-- Third argument is optional; If true given, signs like dot (.) will be replaced.
	frame.args[3] = frame.args[3] or nil
	return p.convert(frame.args[1], frame.args[2], frame.args[3])
end

-- Use these function directly in modules.

function p.convert_cordination_template(frame)
	return p.convert("en", p.convert_cordination(frame.args[1]))
end

function p.convert_cordination(text)
	text = tostring(text)
	text = mw.ustring.gsub(text, "شمالی", "N")
	text = mw.ustring.gsub(text, "شرقی", "E")
	text = mw.ustring.gsub(text, "جنوبی", "S")
	text = mw.ustring.gsub(text, "غربی", "W")
	return text
end

function p.convert_Fa_cordination(text)
	text = tostring(text)
	text = mw.ustring.gsub(text, "N", "شمالی")
	text = mw.ustring.gsub(text, "E", "شرقی")
	text = mw.ustring.gsub(text, "S", "جنوبی")
	text = mw.ustring.gsub(text, "W", "غربی")
	return text
end

function p.convert(lang, text, signs, virgule)
	local file
	local files = {}
	local i = 1
	text = tostring(text)
	if mw.ustring.find(text, "%[%[[Ffپ][Iiر][Llو][Eeن]د?ه?%:") then
		for capture in mw.ustring.gmatch(text, "%[%[[Ffپ][Iiر][Llو][Eeن]د?ه?%:.+%]%]") do
			text = mw.ustring.gsub(text, "%[%[[Ffپ][Iiر][Llو][Eeن]د?ه?%:.+%]%]", "FILE", 1)
			files[i] = capture
			i = i + 1
		end
		i = 1
	end

	signs = signs or nil
	virgule = virgule or nil

	if lang == "fa" or lang == "ur" or lang == "mzn" or lang == "glk" then -- برای فارسی، اردو، مازندرانی، گیلکی
		text = mw.ustring.gsub(text, "[0٠]", "۰")
		text = mw.ustring.gsub(text, "[1١]", "۱")
		text = mw.ustring.gsub(text, "[2٢]", "۲")
		text = mw.ustring.gsub(text, "[3٣]", "۳")
		text = mw.ustring.gsub(text, "[4٤]", "۴")
		text = mw.ustring.gsub(text, "[5٥]", "۵")
		text = mw.ustring.gsub(text, "[6٦]", "۶")
		text = mw.ustring.gsub(text, "[7٧]", "۷")
		text = mw.ustring.gsub(text, "[8٨]", "۸")
		text = mw.ustring.gsub(text, "[9٩]", "۹")
		text = mw.ustring.gsub(text, "[.]", "٫")
		if type(signs) ~= "nil" then
			text = mw.ustring.gsub(text, "%.", "٫")
		--تبدیل % به درصد فارسی ٪ را نگذاشتم چون ممکن است کدهای درصدی وارد شده به پودمان را خراب کند.
		end
	elseif lang == "ar" or lang == "ckb" or lang == "ks" then -- برای عربی، کردی سورانی، کشمیری
		text = mw.ustring.gsub(text, "[۰0]", "٠")
		text = mw.ustring.gsub(text, "[۱1]", "١")
		text = mw.ustring.gsub(text, "[۲2]", "٢")
		text = mw.ustring.gsub(text, "[۳3]", "٣")
		text = mw.ustring.gsub(text, "[۴4]", "٤")
		text = mw.ustring.gsub(text, "[۵5]", "٥")
		text = mw.ustring.gsub(text, "[۶6]", "٦")
		text = mw.ustring.gsub(text, "[۷7]", "٧")
		text = mw.ustring.gsub(text, "[۸8]", "٨")
		text = mw.ustring.gsub(text, "[۹9]", "٩")
	elseif lang and lang ~= "" then -- برای همهٔ زبان‌های دیگر
		text = mw.ustring.gsub(text, "[۰٠]", "0")
		text = mw.ustring.gsub(text, "[۱١]", "1")
		text = mw.ustring.gsub(text, "[۲٢]", "2")
		text = mw.ustring.gsub(text, "[۳٣]", "3")
		text = mw.ustring.gsub(text, "[۴٤]", "4")
		text = mw.ustring.gsub(text, "[۵٥]", "5")
		text = mw.ustring.gsub(text, "[۶٦]", "6")
		text = mw.ustring.gsub(text, "[۷٧]", "7")
		text = mw.ustring.gsub(text, "[۸٨]", "8")
		text = mw.ustring.gsub(text, "[۹٩]", "9")
		text = mw.ustring.gsub(text, "٫", ".")
		text = mw.ustring.gsub(text, "٪", "%")
		if type(virgule) ~= "nil" then
			text = mw.ustring.gsub(text, "،", ",")
			text = mw.ustring.gsub(text, "٪", "%")
		end
	end
	if #files > 0 then
		while i <= #files do
			text = mw.ustring.gsub(text, "FILE", files[i], 1)
			i = i + 1
		end
	end
	return text
end
	
return p