git.iko.soy/typeable/extra-time
on master help sign in
Merge pull request #4 from typeable/ville/add-opm-holidays

Add opm's list of holidays

commit3e734ecc0997a44d661ff3e1460a509165f862a3 authorVille Tirronen <ville.tirronen@jyu.fi> dateWed 12 Apr 2023, 13:42 (4 years ago) parent113c91b4d32a63
4 files changed+132−1
data/opm-holidays.csv+112 extra-time.cabal+11−1 src/Data/Time/Holidays.hs+8 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+11−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
@@ -15,7 +15,9 @@ library
1515 DataKinds
1616 DeriveFunctor
1717 DeriveGeneric
18+ DerivingStrategies
1819 GeneralizedNewtypeDeriving
20+ ImportQualifiedPost
1921 KindSignatures
2022 OverloadedStrings
2123 RankNTypes
@@ -27,10 +29,16 @@ library
2729 -- | from ghc
2830 base >= 4.7 && < 5 ,
2931 binary ,
32+ bytestring ,
3033 containers ,
34+ cassava ,
35+ cassava-embed ,
36+ file-embed ,
3137 deepseq ,
3238 mtl >= 2.2 ,
39+ template-haskell ,
3340 text ,
41+ th-lift ,
3442 time,
3543 -- | from hackage
3644 aeson ,
@@ -40,6 +48,7 @@ library
4048 QuickCheck ,
4149 quickcheck-instances ,
4250 timezone-series ,
51+ vector ,
4352 if !impl(ghcjs)
4453 build-depends:
4554 dom-parser ,
@@ -52,3 +61,4 @@ library
5261 Data.Time.Utils
5362 other-modules:
5463 Data.Time.LocalTime.Instances
64+ Holidays.EDay
src/Data/Time/Holidays.hs+8
@@ -1,5 +1,6 @@
11module Data.Time.Holidays
22 ( addTimeExcludingHolidays
3+ , opmHolidays2023to2030
34 ) where
45
56import Data.Proxy
@@ -7,7 +8,14 @@ import qualified Data.Set as S
78import Data.Time
89import Data.Time.Calendar.OrdinalDate
910import Data.Time.LocalTime.TimeZone.Series
11+import Data.FileEmbed (makeRelativeToProject)
12+import Data.Csv.Embed (embedRecords)
13+import Holidays.EDay (eDayToDay, EDay)
1014
15+opmHolidays2023to2030 :: S.Set Day
16+opmHolidays2023to2030 = S.fromList $
17+ eDayToDay <$>
18+ $(makeRelativeToProject "data/opm-holidays.csv" >>= embedRecords (Proxy @(EDay)))
1119
1220addTimeExcludingHolidays
1321 :: S.Set Day
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