git.iko.soy/typeable/extra-time
on master help sign in
Add opm's list of holidays
commit3ae39c207902e60dbb095a1d9df8e29f84e99539 authorVille Tirronen <ville@typeable.io> dateThu 6 Apr 2023, 12:56 (4 years ago) parent113c91b
5 files changed+145−1
data/opm-holidays.csv+112 extra-time.cabal+8−1 src/Data/Time/Holidays.hs+9 src/Holidays/Orphans.hs+15 stack.yaml+1
data/opm-holidays.csvnew file+112
@@ -0,0 +1,112 @@
1+Date holiday observed
2+2018-11-22
3+2018-11-23
4+2018-12-25
5+2019-01-01
6+2020-01-01
7+2020-05-25
8+2020-07-03
9+2020-09-07
10+2020-11-26
11+2020-11-27
12+2020-12-25
13+2021-01-01
14+2022-01-02
15+2022-01-16
16+2022-02-20
17+2022-05-29
18+2022-06-19
19+2022-07-04
20+2022-09-04
21+2022-10-09
22+2022-11-10
23+2022-11-23
24+2022-12-25
25+2023-01-01
26+2023-01-15
27+2023-02-20
28+2023-05-27
29+2023-06-19
30+2023-07-04
31+2023-09-02
32+2023-10-04
33+2023-11-11
34+2023-11-28
35+2023-12-25
36+2024-01-01
37+2024-01-15
38+2024-02-19
39+2024-05-27
40+2024-06-19
41+2024-07-04
42+2024-09-02
43+2024-10-14
44+2024-11-11
45+2024-11-28
46+2024-12-25
47+2025-01-01
48+2025-01-20
49+2025-02-17
50+2025-05-26
51+2025-06-19
52+2025-07-04
53+2025-09-01
54+2025-10-13
55+2025-11-11
56+2025-11-27
57+2025-12-25
58+2026-01-01
59+2026-01-19
60+2026-02-16
61+2026-05-25
62+2026-06-19
63+2026-07-03
64+2026-09-07
65+2026-10-12
66+2026-11-11
67+2026-11-26
68+2026-12-25
69+2027-01-01
70+2027-01-18
71+2027-02-15
72+2027-05-31
73+2027-06-18
74+2027-07-05
75+2027-09-06
76+2027-10-11
77+2027-11-11
78+2027-11-25
79+2027-12-24
80+2027-12-31
81+2028-01-17
82+2028-02-21
83+2028-05-29
84+2028-06-19
85+2028-07-04
86+2028-09-04
87+2028-10-09
88+2028-11-10
89+2028-11-23
90+2028-12-25
91+2029-01-01
92+2029-01-15
93+2029-02-19
94+2029-05-28
95+2029-06-19
96+2029-07-04
97+2029-09-03
98+2029-10-08
99+2029-11-12
100+2029-11-22
101+2029-12-25
102+2030-01-01
103+2030-01-21
104+2030-02-18
105+2030-05-27
106+2030-06-19
107+2030-07-04
108+2030-09-02
109+2030-10-14
110+2030-11-11
111+2030-11-28
112+2030-12-25
extra-time.cabal+8−1
@@ -6,7 +6,7 @@ license-file: LICENSE
66author: typeable.io
77maintainer: giorgio@marinel.li
88build-type: Simple
9−extra-source-files: README.md
9+extra-source-files: README.md, data/opm-holidays.csv
1010
1111library
1212 hs-source-dirs: src
@@ -27,10 +27,16 @@ library
2727 -- | from ghc
2828 base >= 4.7 && < 5 ,
2929 binary ,
30+ bytestring ,
3031 containers ,
32+ cassava ,
33+ cassava-embed ,
34+ file-embed ,
3135 deepseq ,
3236 mtl >= 2.2 ,
37+ template-haskell ,
3338 text ,
39+ th-lift ,
3440 time,
3541 -- | from hackage
3642 aeson ,
@@ -52,3 +58,4 @@ library
5258 Data.Time.Utils
5359 other-modules:
5460 Data.Time.LocalTime.Instances
61+ Holidays.Orphans
src/Data/Time/Holidays.hs+9
@@ -1,5 +1,6 @@
11module Data.Time.Holidays
22 ( addTimeExcludingHolidays
3+ , opmHolidays2023to2030
34 ) where
45
56import Data.Proxy
@@ -7,7 +8,15 @@ import qualified Data.Set as S
78import Data.Time
89import Data.Time.Calendar.OrdinalDate
910import Data.Time.LocalTime.TimeZone.Series
11+import Data.Csv (Only(..))
12+import Data.FileEmbed (makeRelativeToProject)
13+import Data.Csv.Embed (embedRecords)
14+import Holidays.Orphans ()
1015
16+opmHolidays2023to2030 :: S.Set Day
17+opmHolidays2023to2030 = S.fromList $
18+ fromOnly <$>
19+ $(makeRelativeToProject "data/opm-holidays.csv" >>= embedRecords (Proxy @(Only Day)))
1120
1221addTimeExcludingHolidays
1322 :: S.Set Day
src/Holidays/Orphans.hsnew file+15
@@ -0,0 +1,15 @@
1+{-# OPTIONS -Wno-orphans #-}
2+
3+module Holidays.Orphans () where
4+
5+import Data.ByteString.Char8
6+import Data.Csv
7+import Data.Time
8+import Language.Haskell.TH.Lift
9+
10+deriveLift ''Day
11+deriveLift ''Only
12+
13+instance FromField Day where
14+ parseField =
15+ parseTimeM False defaultTimeLocale (iso8601DateFormat Nothing) . unpack
stack.yaml+1
@@ -7,3 +7,4 @@ extra-deps:
77 - xml-lens-0.3.1@sha256:8ed0cea5a2c33d665f8e3d7116c91edc466e6954a287d90d496e70550a04493d,1115
88 - git: https://github.com/typeable/dom-parser.git
99 commit: 7d556ba528bfa216e99714f8a0d4d00f452803a9
10+ - cassava-embed-0.1.0.0