Template:CalFillAugust

From Nookipedia, the Animal Crossing wiki
Jump to navigation Jump to search


← July August 2020 September →
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
26
27
28
29
30
31
01
Fireworks Show (WW)
02
Fireworks Show (CF/NL)
03
04
05
06
07
08
Fireworks Show (WW)
09
Fireworks Show (CF/NL)
10
11
12
Meteor Shower (AC)
13
14
15
ObonJP
Bug Off (CF/NL)
Fireworks Show (WW)
16
Fireworks Show (CF/NL)
Bug Off (WW)
17
18
19
20
21
Founder's Day (AC)
22
Fireworks Show (WW)
23
Fireworks Show (CF/NL)
24
25
26
27
28
29
Fireworks Show (WW)
30
Fireworks Show (CF/NL)
31
End of Morning Aerobics (AC)
01
02
03
04
05


Template documentation (view)


Usage

{{CalFillAugust|year=YEAR}}

This template is used to automatically generate and populate a template call for Template:Calendar for the month of August for a year YEAR. If no year is provided, the current year will be used.

Coding notes

  • Two variables are predefined using Extension:Variables, namely curYear, which contains either the current year or a predefined YEAR, and firstDay, which is the first day of the current month for the year curYear.
  • 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:

    {{#ifeq: {{#var:firstDay}} | Tuesday | ...}}

    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,

    {{#switch: {{#var:firstDay}} | Tuesday | Wednesday =...}}

    and the logic is essentially the same. The usage of #ifeq is recommended to facilitate multiple overlapping events.
  • For days with multiple events (i.e., those with multiple #switch and #ifeq 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 <!--\n\t-->. 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 #ifeq statement fails). The reason why \n\t 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 <!--\n\t--> with \n\t 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 New Leaf. Another example is February 14, 2026, when both the Fishing Tourney and Valentine's Day occur in City Folk. 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 {{#var:curYear}} matches for some pre-determined date:

    |28 = {{#switch: {{#var:curYear}} | 2022 | 2033 = ...

    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.