module Holidays.Base (
Holiday (..),
ISO_3166_1_Alpha_3,
Region,
day,
hday,
nullDay,
validDay,
) where
import Data.Text qualified as T
import Data.Time
type ISO_3166_1_Alpha_3 = T.Text
type Region = T.Text
data Holiday
= Holiday
{ Holiday -> Text
holidayKey :: T.Text,
Holiday -> Day
holidayValue :: Day
}
deriving (Eq Holiday
Eq Holiday
-> (Holiday -> Holiday -> Ordering)
-> (Holiday -> Holiday -> Bool)
-> (Holiday -> Holiday -> Bool)
-> (Holiday -> Holiday -> Bool)
-> (Holiday -> Holiday -> Bool)
-> (Holiday -> Holiday -> Holiday)
-> (Holiday -> Holiday -> Holiday)
-> Ord Holiday
Holiday -> Holiday -> Bool
Holiday -> Holiday -> Ordering
Holiday -> Holiday -> Holiday
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Holiday -> Holiday -> Ordering
compare :: Holiday -> Holiday -> Ordering
$c< :: Holiday -> Holiday -> Bool
< :: Holiday -> Holiday -> Bool
$c<= :: Holiday -> Holiday -> Bool
<= :: Holiday -> Holiday -> Bool
$c> :: Holiday -> Holiday -> Bool
> :: Holiday -> Holiday -> Bool
$c>= :: Holiday -> Holiday -> Bool
>= :: Holiday -> Holiday -> Bool
$cmax :: Holiday -> Holiday -> Holiday
max :: Holiday -> Holiday -> Holiday
$cmin :: Holiday -> Holiday -> Holiday
min :: Holiday -> Holiday -> Holiday
Ord, Holiday -> Holiday -> Bool
(Holiday -> Holiday -> Bool)
-> (Holiday -> Holiday -> Bool) -> Eq Holiday
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Holiday -> Holiday -> Bool
== :: Holiday -> Holiday -> Bool
$c/= :: Holiday -> Holiday -> Bool
/= :: Holiday -> Holiday -> Bool
Eq, Int -> Holiday -> ShowS
[Holiday] -> ShowS
Holiday -> String
(Int -> Holiday -> ShowS)
-> (Holiday -> String) -> ([Holiday] -> ShowS) -> Show Holiday
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Holiday -> ShowS
showsPrec :: Int -> Holiday -> ShowS
$cshow :: Holiday -> String
show :: Holiday -> String
$cshowList :: [Holiday] -> ShowS
showList :: [Holiday] -> ShowS
Show)
day :: Year -> MonthOfYear -> DayOfMonth -> Day
day :: Year -> Int -> Int -> Day
day = Year -> Int -> Int -> Day
fromGregorian
hday :: T.Text -> Day -> Holiday
hday :: Text -> Day -> Holiday
hday Text
k Day
d = Holiday {holidayKey :: Text
holidayKey = Text
k, holidayValue :: Day
holidayValue = Day
d}
nullDay :: Day
nullDay :: Day
nullDay = Year -> Int -> Int -> Day
day Year
0 Int
0 Int
0
validDay :: Day -> Bool
validDay :: Day -> Bool
validDay = Bool -> Bool
not (Bool -> Bool) -> (Day -> Bool) -> Day -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Day
nullDay ==)