|
|
Line 86: |
Line 86: |
| -->{{#switch: {{#var:curYear}} | 2044 = <center>'''[[Festivale]]'''</center>}}<!-- | | -->{{#switch: {{#var:curYear}} | 2044 = <center>'''[[Festivale]]'''</center>}}<!-- |
| --><small><ul><li>[[Luna]]'s birthday</li></ul></small> | | --><small><ul><li>[[Luna]]'s birthday</li></ul></small> |
− | }}<noinclude> | + | }}<noinclude><br> |
− | ==Usage==
| + | {{Documentation}} |
− | <pre>{{CalFillFebruary|year=YEAR}}</pre> | + | [[Category:Calendar templates]] |
− | This template is used to automatically generate and populate a template call for [[Template:Calendar]] for the month of [[February]] for a year <code>YEAR</code>. If no year is provided, the current year will be used.
| |
− | ==Coding notes==
| |
− | *Two variables are predefined using [https://www.mediawiki.org/wiki/Extension:Variables Extension:Variables], namely <code>curYear</code>, which contains either the current year or a predefined <code>YEAR</code>, and <code>firstDay</code>, which is the first day of the current month for the year <code>curYear</code>.
| |
− | *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:<blockquote><code><nowiki>{{#ifeq: {{#var:firstDay}} | Tuesday | ...}}</nowiki></code></blockquote>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 <code>...</code> in this example). If an event lasts for more than one day (e.g. [[Bright Nights]]) a #switch function is used instead, <blockquote><code><nowiki>{{#switch: {{#var:firstDay}} | Tuesday | Wednesday =...}}</nowiki></code></blockquote>and the logic is essentially the same. The usage of <code>#ifeq</code> is recommended to facilitate multiple overlapping events.
| |
− | *For days with multiple events (i.e., those with multiple <code>#switch</code> and <code>#ifeq</code> functions), the following hierarchy is recommended. The arrangement of multiple events that occur in the same category (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, as much as possible, they should be arranged from earliest appearance (game) to latest, regionally (international, NA, JP, EU, KO), alphabetically.
| |
− | **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.
| |
− | *Those who look at the code may be surprised when they see <code><nowiki><!--\n\t--></nowiki></code>. 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 <code>#ifeq</code> statement fails). The reason why <code><nowiki>\n\t</nowiki></code> is not used is because unwanted linebreaks will occur: see [https://www.mediawiki.org/wiki/Topic:Pqwack7wze5mkv2q this page] for more information. For those who will revise the code in the future, they may temporarily replace <code><nowiki><!--\n\t--></nowiki></code> with <code><nowiki>\n\t</nowiki></code> in a 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 1 April 2018, both [[Bunny Day]] and [[April Fool's Day]] occur on the same day in {{NL|short|nolink}}. Another example is 14 February 2026, when both the [[Fishing Tourney]] and [[Valentine's Day]] occur in {{CF|short|nolink}}. Unless otherwise stated, all events that overlap each other will occur at the same day.<br>
| |
− | *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 <code><nowiki>{{#var:curYear}}</nowiki></code> matches for some pre-determined date:<blockquote><code><nowiki>|28 = {{#switch: {{#var:curYear}} | 2022 | 2033 = ...</nowiki></code></blockquote>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 in 2050 onward and for future releases.
| |
| </noinclude> | | </noinclude> |