مسابقه دانش‌دخت
اسلامیکال از تاریخ ۱۵ دی تا ۲۰ بهمن، میزبان یک همایه با موضوع زنان است. شما می‌توانید در مسابقه مقاله‌نویسی دانش‌دخت، شرکت کنید و با نگارش مقاله، از جوایز آن بهره‌مند باشید. اگر به موضوعات مربوط با زنان علاقه‌مندید، این فرصت را از دست ندهید. فهرستی از مقالات پیشنهادی جهت ایجاد یا ویرایش در اینجا وجود دارد.

پودمان:Infobox/dates

از اسلامیکال
نسخهٔ تاریخ ‏۹ مهٔ ۲۰۲۴، ساعت ۰۰:۵۵ توسط Shahroudi (بحث | مشارکت‌ها) (صفحه‌ای تازه حاوی «local getArgs = require('Module:Arguments').getArgs local default_error_category = "Category:Pages using infobox television with nonstandard dates" local p = {} function p.start_end_date_template_validation(frame) local args = getArgs(frame) local error_category = args.error_category or default_error_category local start_date = args.first_aired or args.released or args.airdate or args.release_date or args.airdate_overall if...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

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

local getArgs = require('Module:Arguments').getArgs

local default_error_category = "[[Category:Pages using infobox television with nonstandard dates]]"

local p = {}

function p.start_end_date_template_validation(frame)
	local args = getArgs(frame)
	local error_category = args.error_category or default_error_category

	local start_date = args.first_aired or args.released or args.airdate or args.release_date or args.airdate_overall
	if start_date then
		if not start_date:find("dtstart") then
			return error_category
		end
	end

	local end_date = args.last_aired
	if end_date then
		if not end_date:find("dtend") and end_date ~= "present" then
			return error_category
		end
	end
end

function p.dates(frame)
	local returnval
	local args = getArgs(frame)
	
	if table.getn(args) < 2 then
		if args['1'] == nil and args['2'] == nil then
			return ''
		elseif args['1'] == nil then 
			return args['2']
		elseif args['2'] == nil then 
			return args['1']
		end
	end
	
	args['1'] = args['1']:gsub("&nbsp;"," ")
	args['2'] = args['2']:gsub("&nbsp;"," ")
	
	local dmy = false
	local pr1, m1, d1, y1, su1 = string.match(args['1'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
	local pr2, m2, d2, y2, su2 = string.match(args['2'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
	if y1 == nil then
		dmy = true
		pr1, d1, m1, y1, su1 = string.match(args['1'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
		pr2, d2, m2, y2, su2 = string.match(args['2'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
	end
	
	local dash = '&nbsp;–<br />'
	if y1 ~= nil and y2 ~= nil then
		su1 = su1 or ''
		su2 = su2 or ''
		
		local MONTHS = {January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12}
		local diff = os.time({year=y2, month=MONTHS[m2], day=d2, hour=0, min=0, sec=0}) - os.time({year=y1, month=MONTHS[m1], day=d1, hour=0, min=0, sec=0})
		
		if diff < 0 then
			returnval = 'Invalid date range'
		else
			if y1 == y2 then
				if dmy == false then
					returnval = pr1 .. m1 .. ' ' .. d1 .. su1 .. dash .. pr2 .. m2 ..' '.. d2 ..', '.. y2 .. su2
				else
					returnval = pr1 .. d1 .. ' ' .. m1 .. su1 .. dash .. pr2 .. d2 .. ' ' .. m2 .. ' ' .. y2 .. su2
				end
			else
				if dmy == false then
					returnval = pr1 .. m1 .. ' ' .. d1 ..', '.. y1 .. su1 .. dash .. pr2 .. m2 .. ' '.. d2 .. ', ' .. y2 .. su2
				else
					returnval = pr1 .. d1 .. ' ' .. m1 ..' '.. y1 .. su1 .. dash .. pr2 .. d2 .. ' '.. m2 .. ' ' .. y2 .. su2
				end
			end
		end
	else
		returnval = args['1']..dash..args['2'];
	end
	
	return returnval;
end

return p