-- এই মডিউলটি প্রবেশদ্বার:চলতি ঘটনাসমূহ এর পঞ্জিকা দেখাতে সাহায্য করে।  --[[ 	Incoming expected variables: 		frame.args.year = Integer value for year 		frame.args.month = Integer value for month, 1 based. --]]  local p = {}  local function makeWikilink(link, display) 	if display then 		return string.format('%s', link, display) 	else 		return string.format('%s', link) 	end end  function p.main(frame) 	local argsDate = nil 	if (frame and frame.args and frame.args.year and frame.args.month) then 		-- If a date is passed in, assume that the display page is an Archive page. 		-- If no date passed in, assume that the display page is the current Current Events page 		argsDate = frame.args.year .. "-" .. frame.args.month .. "-01" -- Construct a date, YYY-M-DD format. 	end 	local dateStuff = p.getDateStuff(argsDate) 	local dayStrings = p.makeDayStrings(dateStuff) 	return p.export(dayStrings, dateStuff) end  function p.getDateStuff(argsDate)  --[[ 	Note: This function takes advantage of the formatDate's second argument to 	create data for the archival calendars. If the second arg (argsDate) is nil, 	then formatDate assumes the current date/time. --]]  	-- তারিখের তথ্য পাওয়া। 	local dateStuff = {} 	local lang = mw.language.getContentLanguage() 	dateStuff.argsDate = argsDate 	--বছর 	local year = lang:formatDate('Y', argsDate) 	year = tonumber(year) 	dateStuff.year = year 	-- মাস 	local month = lang:formatDate('F', argsDate) 	dateStuff.month = month 	-- মাস এবং বছর 	local monthAndYear = lang:formatDate('F Y', argsDate) 	local firstOfMonth = lang:formatDate('01-m-Y', argsDate) 	dateStuff.monthAndYear = monthAndYear 	-- পূর্ববর্তী মাস এবং বছর 	dateStuff.previousMonthAndYear = lang:formatDate('F Y', firstOfMonth .. ' -1 month') 	-- পরবর্তী মাস এবং বছর 	dateStuff.nextMonthAndYear = lang:formatDate('F Y', firstOfMonth .. ' +1 month') 	-- দিন 	local day = lang:formatDate('j', argsDate) 	day = tonumber(day) 	dateStuff.day = day 	-- মাসে দিনসমূহ 	local daysInMonth = lang:formatDate('j', firstOfMonth .. ' +1 month -1 day') 	daysInMonth = tonumber(daysInMonth) 	dateStuff.daysInMonth = daysInMonth 	-- মাসের প্রথম দিনের রবিবার বাদে সপ্তাহের যে কোন দিন 	local firstWeekday = lang:formatDate('w', firstOfMonth) -- Sunday = 0, Saturday = 6 	firstWeekday = tonumber(firstWeekday) 	firstWeekday = firstWeekday + 1 -- লুয়া টেবিল সাথে সামঞ্জস্যপূর্ণ করুন। Sunday = 1, Saturday = 7. 	dateStuff.firstWeekday = firstWeekday 	return dateStuff end  function p.makeDayStrings(dateStuff) 	local calStrings = {} 	local currentDay = dateStuff.day 	local isLinkworthy = p.isLinkworthy 	local currentMonth = dateStuff.month 	local currentYear = dateStuff.year 	local makeDayLink = p.makeDayLink 	for day = 1, dateStuff.daysInMonth do 		if dateStuff.argsDate or isLinkworthy(day, currentDay) then 			calStrings[#calStrings + 1] = makeDayLink(day, currentMonth, currentYear) 		else 			calStrings[#calStrings + 1] = tostring(day) 		end 	end 	return calStrings end  function p.isLinkworthy(day, currentDay) 	-- Returns true if the calendar day should be linked, and false if not. 	-- Days should be linked if they are the current day or if they are within the six 	-- preceding days, as that is the number of items on the current events page. 	if currentDay - 6 <= day and day <= currentDay then 		return true 	else 		return false 	end end  function p.makeDayLink(day, month, year) 	return string.format("  %d  ", year, month, day, day) end  function p.export(dayStrings, dateStuff) 	-- পঞ্জিকাটি এইচটিএমএল উত্পন্ন করে। 	local monthAndYear = dateStuff.monthAndYear 	local root = mw.html.create('table') 	-- The next two lines help to make the table-layout-based Archive pages look good. When the  	-- Archives have been converted to a grid-based layout, this logic can be removed, and the 	-- corressponding CSS margin attribute can be simplified. 	local temporaryMarginAdjustment = "auto !important" 	if dateStuff.argsDate then temporaryMarginAdjustment = "8px 0 0 8px" end 	root 		:addClass('তথ্যছক') 		:css{ 			display = 'table', 			width = '100%', 			float = 'initial',  			['max-width'] = '350px', 			margin = temporaryMarginAdjustment, 			['text-align'] = 'center', 			['background-color'] = '#f5faff', 			border = '1px solid #cedff2' 		} 		-- Headings 		:tag('tr') 			:css('background-color', '#cedff2') 			:tag('th') 				:css{['text-align'] = 'center'} 				:tag('span') 					:addClass('noprint') 					:wikitext(makeWikilink('প্রবেশদ্বার:চলতি ঘটনাসমূহ/' .. dateStuff.previousMonthAndYear, '◀')) 					:done() 				:done() 			:tag('th') 				:attr('colspan', '5') 				:css{['text-align'] = 'center'} 				:wikitext(makeWikilink('প্রবেশদ্বার:চলতি ঘটনাসমূহ/' .. monthAndYear, monthAndYear)) 				:done() 			:tag('th') 				:css{['text-align'] = 'center'} 				:tag('span') 					:addClass('noprint') 					:wikitext(makeWikilink('প্রবেশদ্বার:চলতি ঘটনাসমূহ/' .. dateStuff.nextMonthAndYear, '▶'))  	-- সপ্তাহের দিন শিরোনাম  	local dayHeadingRow = root:tag('tr') 	local weekdays = {'রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্র', 'শনি'} 	for i, weekday in ipairs(weekdays) do 		dayHeadingRow:tag('th') 			:css{['width'] = '14%', ['text-align'] = 'center'} 			:wikitext(weekday) 	end  	-- দিনসমূহ 	local cellCount = 1 - dateStuff.firstWeekday -- Tracks the number of day cells. Negative values used for initial blank cells. 	while cellCount < #dayStrings do -- প্রথম সারি শেষ 		local weeklyRow = root:tag('tr') 		for i = 1, 7 do -- Always make 7 cells. 			cellCount = cellCount + 1 			local dayString = dayStrings[cellCount] or " " -- Use a blank cell if there is no corresponding dateString 			weeklyRow:tag('td') 				:css{['text-align'] = 'center'} 				:wikitext(dayString) 		end 	end  	-- Footer 	if not dateStuff.argsDate then -- No footer necessary on Archive pages. 		root:tag('tr') 		    :addClass('noprint') 			:tag('td') 				:attr('colspan', '7') 				:css{['padding-top'] = '3px', ['padding-bottom'] = '5px', ['font-size'] = '78%', ['text-align'] = 'right'} 				:wikitext(makeWikilink('প্রবেশদ্বার:চলতি ঘটনাসমূহ/' .. monthAndYear, 'আরও ' .. monthAndYear .. ' ঘটনাসমূহ...   ')) 	end 	 	return tostring(root) end  return p