Module:Upcoming Birthdays/doc

From NOISZ Wiki

This is the documentation page for Module:Upcoming Birthdays

For use on the Main Page.

The Upcoming Birthdays Module sorts through a list of predefined character birthdays, and returns the three birthdays that are soonest. They're part of a list with their month and day defined as they are, and their year defined as whatever the current year is, and the difference in time between that birthday and the current time:

	birthdays = {}
	birthdays[1] = {'Hikari Aoki',os.difftime(os.time{year=currentYear,month=01,day=22},currentDay),'January 22nd'}
	birthdays[2] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear,month=03,day=14},currentDay),'March 14th'} 
	birthdays[3] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear,month=04,day=01},currentDay),'April 1st'}
	birthdays[4] = {'Arietta Antiphon',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[5] = {'Joker',os.difftime(os.time{year=currentYear,month=06,day=18},currentDay),'June 18th'}
	birthdays[6] = {'Asuka Fujita',os.difftime(os.time{year=currentYear,month=07,day=30},currentDay),'July 30th'}
	birthdays[7] = {'Sumire Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[8] = {'Hitori',os.difftime(os.time{year=currentYear,month=09,day=09},currentDay),'September 9th'}
	birthdays[9] = {'Hakuno Nekoda',os.difftime(os.time{year=currentYear,month=12,day=25},currentDay),'December 25th'}
	birthdays[10] = {'Shion Nekoda',os.difftime(os.time{year=currentYear,month=12,day=29},currentDay),'December 29th'}
	birthdays[11] = {'Hikari Aoki',os.difftime(os.time{year=currentYear+1,month=01,day=22},currentDay),'January 22nd'}
	birthdays[12] = {'Sera Hoshikawa',os.difftime(os.time{year=currentYear+1,month=03,day=14},currentDay),'March 14th'}
	birthdays[13] = {'Grace Kamenashi',os.difftime(os.time{year=currentYear+1,month=04,day=01},currentDay),'April 1st'}

New birthdays can be put in using this general format. Hikari, Sera and Grace have their birthdays defined for the next year to cover the period between Shion's birthday and the new year.

The module takes this list and sorts through it. The soonest three are the ones at the top of the list:

table.sort(birthdays, sortBirthdays)
	local numBirthdays = 0
	local birthdayString = ''
	local galleryChars = {}
for k, v in pairs(birthdays) do
		if v[2] > 0 and numBirthdays < 3 and v[2] then 
			numBirthdays = numBirthdays + 1
			galleryChars[numBirthdays] = v[1]
			birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math.ceil(v[2]/86400) .. ' days) <br/>'
		end
	end

And are the ones returned in the form of the SL Story Gallery template:

	return frame:expandTemplate{ title ='SL Story Gallery', args = {spacerheight='0px', char1 = galleryChars[1], char2 = galleryChars[2], char3 = galleryChars[3]}} .. birthdayString