-- references:
-- https://en.wikipedia.org/wiki/Public_holidays_in_Namibia
{-# LANGUAGE OverloadedStrings #-}

module Holidays.Namibia (
  holidays,
) where

import Data.Time

import Holidays.Base
import Holidays.DateFinder
import Holidays.DateTransform (DateTransform, sundayRule)

holidays :: ([Year -> Holiday], [DateTransform])
holidays :: ([Year -> Holiday], [DateTransform])
holidays =
  ( [ Text -> Day -> Holiday
hday Text
"new_years_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
newYearsDay,
      Text -> Day -> Holiday
hday Text
"independence_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
mar DayOfMonth
21,
      Text -> Day -> Holiday
hday Text
"good_friday" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
goodFriday,
      Text -> Day -> Holiday
hday Text
"easter_sunday" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
easterSunday,
      Text -> Day -> Holiday
hday Text
"ascension_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
ascensionDay,
      Text -> Day -> Holiday
hday Text
"workers_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
workersDay,
      Text -> Day -> Holiday
hday Text
"cassinga_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
may DayOfMonth
4,
      Text -> Day -> Holiday
hday Text
"africa_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
may DayOfMonth
25,
      Text -> Day -> Holiday
hday Text
"heroes_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
aug DayOfMonth
26,
      Text -> Day -> Holiday
hday Text
"human_rights_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
dec DayOfMonth
10,
      Text -> Day -> Holiday
hday Text
"christmas_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
christmasDay,
      Text -> Day -> Holiday
hday Text
"family_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Year -> Day
boxingDay,
      Text -> Day -> Holiday
hday Text
"genocide_remembrance_day" (Day -> Holiday) -> (Year -> Day) -> Year -> Holiday
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Year -> Bool) -> Day -> Day
years (Year -> Year -> Bool
forall a. Ord a => a -> a -> Bool
>= Year
2025) (Day -> Day) -> (Year -> Day) -> Year -> Day
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DayOfMonth -> Year -> Day
may DayOfMonth
28
    ],
    [DateTransform
sundayRule]
  )