Template:Calendar/Coding notes


 * This template below is used in the documentation of month templates in Category:Calendar templates.

==Coding notes==
 * Two variables are predefined using Extension:Variables, namely, which contains either the current year or a predefined  , and  , which is the first day of the current month for the year.
 * The template determines when a non-date specific event (e.g. fourth Thursday in November) occurs by using the following formula for each possible date that event could occur on:""In this example, the template is checking to see if the first day of the given month is a Tuesday, and if so it will insert information about the event (represented by  in this example). If an event lasts for more than one day (e.g. Bright Nights) a #switch function is used instead, ""and the logic is essentially the same. The usage of   is recommended to facilitate multiple overlapping events.
 * For days with multiple events (i.e., those with multiple  and   functions), the following hierarchy is recommended.
 * Events that fall on a specific day every year (e.g., Valentine's Day and Leap Day), excluding birthdays
 * Events that fall on a specific day on certain years (e.g., Festivale)
 * Events that fall on a non-specific day but on a specific week (e.g., Fishing Tourney)
 * Events that span multiple days (e.g., Bright Nights)
 * Birthdays, non-special to special, alphabetical.
 * The arrangement of multiple events that occur in the same hierarchy (e.g., January's Yay Day and Flea Market, which are both events that fall on a non-specific day but on a specific week) is up to the discretion of the editor; however, it is recommended that they be arranged in the following order: last appearance (events that have last appeared in later games are arranged first), regionally (all regions, NA, JP, EU, KO), alphabetically.
 * Those who look at the code may be surprised when they see several . The presence of this quirk is to make the code legible for future maintainers, and so that line breaks will not be recorded (e.g., if the   statement fails). The reason why   is not used is because unwanted linebreaks will occur: see this comment for more information. For those who will revise the code in the future, they may temporarily replace   with   using their regex-compatible text editor, and do the reverse afterwards.
 * With regards to overlapping events, it is assumed that multiple events will occur on the same day. For example, in April 1, 2018, both Bunny Day and April Fool's Day occur on the same day in . Another example is February 14, 2026, when both the Fishing Tourney and Valentine's Day occur in . Unless otherwise stated, all events that overlap each other will occur at the same day.
 * The calculation of certain holidays such as Festivale and Bunny Day are particularly difficult, for they depend on the lunisolar calendar. The implementation for these holidays is as follows: determine whether  matches for some pre-determined date:""A list of all dates for Festivale must be known beforehand. This is much easier; however, it means that the template must be updated sometime in the future to show the correct dates for certain holidays.