{{ $context := .context }} {{ $year := .year }} {{ $isLeapYear := .isLeapYear }} {{ $month := .month }} {{ $daysPerMonth := dict "1" (seq 31) "2" (seq 28) "2-leap" (seq 29) "3" (seq 31) "4" (seq 30) "5" (seq 31) "6" (seq 30) "7" (seq 31) "8" (seq 31) "9" (seq 30) "10" (seq 31) "11" (seq 30) "12" (seq 31) }} {{ $daysPerWeekMap := dict "Mo." 0 "Di." 1 "Mi." 2 "Do." 3 "Fr." 4 "Sa." 5 "So." 6 }} {{ $daysPerWeek := slice "Mo" "Di" "Mi" "Do" "Fr" "Sa" "So" }} {{ $context.Scratch.Set "daysThisMonth" (index $daysPerMonth (string $month)) }} {{ if and $isLeapYear (eq $month 2) }} {{ $context.Scratch.Set "daysThisMonth" (index $daysPerMonth "2-leap") }} {{ end }} {{ $daysThisMonth := $context.Scratch.Get "daysThisMonth" }} {{ $monthTwoLetters := printf "%02d" $month }} {{ $monthInLetters := dateFormat "January" (string (delimit (slice $year "-" $monthTwoLetters "-01") "")) }} {{ $firstWeekdayInLetters := dateFormat "Mon" (string (delimit (slice $year "-" $monthTwoLetters "-01") "")) }} {{ $firstWeekdayInNumbers := index $daysPerWeekMap $firstWeekdayInLetters }} {{ $firstWeekdayMondayOffset := (sub (add $firstWeekdayInNumbers 6) 6) }} {{ $lastWeekdayStr := (mod (add (len $daysThisMonth) $firstWeekdayMondayOffset) 7) }} {{ $eofFiller := (sub 7 $lastWeekdayStr) }} {{ $lastWeekdayEnd := (sub (add $lastWeekdayStr (cond (eq $eofFiller 7) 0 $eofFiller)) 1) }}