Module:Upcoming Birthdays: Difference between revisions
From NOISZ Wiki
RiceEmpress (talk | contribs) mNo edit summary |
RiceEmpress (talk | contribs) No edit summary Tag: Manual revert |
||
| Line 35: | Line 35: | ||
numBirthdays = numBirthdays + 1 | numBirthdays = numBirthdays + 1 | ||
galleryChars[numBirthdays] = v[1] | galleryChars[numBirthdays] = v[1] | ||
birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math. | birthdayString = birthdayString .. v[3] .. ' - [[' .. v[1] .. ']] (' ..math.ceil(v[2]/86400) .. ' days) <br/>' | ||
end | end | ||
end | end | ||
Latest revision as of 12:51, 22 December 2025
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
local capiunto = require 'capiunto'
local lang = mw.language.getContentLanguage()
local currentYear = lang:formatDate("Y")
local currentDay = os.time()
local p = {}
local function sortBirthdays( a, b )
return a[2] < b[2] and b[2] > 0;
end
function p.main(frame)
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'}
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
return frame:expandTemplate{ title ='SL Story Gallery', args = {spacerheight='0px', char1 = galleryChars[1], char2 = galleryChars[2], char3 = galleryChars[3]}} .. birthdayString
end
return p