holidays 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/CHANGELOG +3 -0
- data/README.rdoc +1 -1
- data/data/el.yaml +79 -0
- data/data/index.yaml +2 -1
- data/holidays.gemspec +136 -130
- data/lib/holidays.rb +28 -1
- data/lib/holidays/au.rb +10 -10
- data/lib/holidays/br.rb +6 -6
- data/lib/holidays/ca.rb +17 -17
- data/lib/holidays/cz.rb +7 -7
- data/lib/holidays/de.rb +7 -7
- data/lib/holidays/dk.rb +8 -8
- data/lib/holidays/el.rb +38 -0
- data/lib/holidays/es.rb +17 -17
- data/lib/holidays/europe.rb +102 -88
- data/lib/holidays/fi.rb +8 -8
- data/lib/holidays/fr.rb +6 -6
- data/lib/holidays/gb.rb +9 -9
- data/lib/holidays/ie.rb +6 -6
- data/lib/holidays/is.rb +9 -9
- data/lib/holidays/it.rb +6 -6
- data/lib/holidays/jp.rb +43 -43
- data/lib/holidays/mx.rb +16 -16
- data/lib/holidays/nl.rb +4 -4
- data/lib/holidays/no.rb +2 -2
- data/lib/holidays/north_america.rb +37 -37
- data/lib/holidays/nyse.rb +5 -5
- data/lib/holidays/nz.rb +13 -13
- data/lib/holidays/pt.rb +7 -7
- data/lib/holidays/scandinavia.rb +39 -39
- data/lib/holidays/se.rb +9 -9
- data/lib/holidays/ups.rb +4 -4
- data/lib/holidays/us.rb +10 -10
- data/lib/holidays/za.rb +7 -7
- data/test/defs/test_defs_el.rb +28 -0
- data/test/defs/test_defs_europe.rb +19 -1
- data/test/test_holidays.rb +8 -0
- metadata +10 -5
data/.gitignore
ADDED
data/CHANGELOG
CHANGED
data/README.rdoc
CHANGED
@@ -68,6 +68,6 @@ Lookup Canada Day in different regions.
|
|
68
68
|
* Docs: http://rdoc.info/github/alexdunae/holidays/master/frames
|
69
69
|
* Contributors: https://github.com/alexdunae/holidays/contributors
|
70
70
|
|
71
|
-
Started by Alex Dunae (dunae.ca, e-mail 'code' at the same domain), 2007-
|
71
|
+
Started by Alex Dunae (dunae.ca, e-mail 'code' at the same domain), 2007-11.
|
72
72
|
|
73
73
|
Made on Vancouver Island.
|
data/data/el.yaml
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# Greek holiday definitions for the Ruby Holiday gem.
|
2
|
+
#
|
3
|
+
# Created: 2011-05-11.
|
4
|
+
# Sources:
|
5
|
+
# http://www.assa.org.au/edm.html
|
6
|
+
# http://fotios.org/node/1104
|
7
|
+
# http://www.faqs.org/faqs/calendars/faq/
|
8
|
+
# http://5dspace-time.org/Calendar/Algorithm.html - for offsets
|
9
|
+
# http://el.wikipedia.org/wiki/Επίσημες_αργίες_στην_Ελλάδα - for holidays
|
10
|
+
# http://www.eortologio.gr/arthra/pasxa.php - for holidays
|
11
|
+
---
|
12
|
+
months:
|
13
|
+
0:
|
14
|
+
- name: Μεγάλη Παρασκευή
|
15
|
+
regions: [el]
|
16
|
+
function: orthodox_easter(year)-2
|
17
|
+
- name: Μεγάλο Σάββατο
|
18
|
+
regions: [el]
|
19
|
+
function: orthodox_easter(year)-1
|
20
|
+
- name: Κυριακή του Πάσχα
|
21
|
+
regions: [el]
|
22
|
+
function: orthodox_easter(year)
|
23
|
+
- name: Δευτέρα του Πάσχα
|
24
|
+
regions: [el]
|
25
|
+
function: orthodox_easter(year)+1
|
26
|
+
- name: Καθαρά Δευτέρα
|
27
|
+
regions: [el]
|
28
|
+
function: orthodox_easter(year)-48
|
29
|
+
- name: Αγίου Πνεύματος
|
30
|
+
regions: [el]
|
31
|
+
function: orthodox_easter(year)+50
|
32
|
+
1:
|
33
|
+
- name: Πρωτοχρονιά
|
34
|
+
regions: [el]
|
35
|
+
mday: 1
|
36
|
+
- name: Θεοφάνεια
|
37
|
+
regions: [el]
|
38
|
+
mday: 6
|
39
|
+
3:
|
40
|
+
- name: Επέτειος της Επανάστασης του 1821
|
41
|
+
regions: [el]
|
42
|
+
mday: 25
|
43
|
+
5:
|
44
|
+
- name: Πρωτομαγιά
|
45
|
+
regions: [el]
|
46
|
+
mday: 1
|
47
|
+
8:
|
48
|
+
- name: Κοίμηση της Θεοτόκου
|
49
|
+
regions: [el]
|
50
|
+
mday: 15
|
51
|
+
10:
|
52
|
+
- name: Επέτειος του Όχι
|
53
|
+
regions: [el]
|
54
|
+
mday: 28
|
55
|
+
12:
|
56
|
+
- name: Χριστούγεννα
|
57
|
+
regions: [el]
|
58
|
+
mday: 25
|
59
|
+
- name: Δεύτερη ημέρα των Χριστουγέννων
|
60
|
+
regions: [el]
|
61
|
+
mday: 26
|
62
|
+
tests: |
|
63
|
+
{Date.civil(2011,1,1) => 'Πρωτοχρονιά',
|
64
|
+
Date.civil(2011,1,6) => 'Θεοφάνεια',
|
65
|
+
Date.civil(2011,4,22) => 'Μεγάλη Παρασκευή',
|
66
|
+
Date.civil(1970,4,25) => 'Μεγάλο Σάββατο',
|
67
|
+
Date.civil(1985,4,14) => 'Κυριακή του Πάσχα',
|
68
|
+
Date.civil(2011,4,24) => 'Κυριακή του Πάσχα',
|
69
|
+
Date.civil(2027,5,2) => 'Κυριακή του Πάσχα',
|
70
|
+
Date.civil(2046,4,30) => 'Δευτέρα του Πάσχα',
|
71
|
+
Date.civil(2011,5,1) => 'Πρωτομαγιά',
|
72
|
+
Date.civil(2011,6,13) => 'Αγίου Πνεύματος',
|
73
|
+
Date.civil(2012,6,4) => 'Αγίου Πνεύματος',
|
74
|
+
Date.civil(2011,3,7) => 'Καθαρά Δευτέρα',
|
75
|
+
Date.civil(2012,2,27) => 'Καθαρά Δευτέρα',
|
76
|
+
Date.civil(2011,12,25) => 'Χριστούγεννα',
|
77
|
+
Date.civil(2011,12,26) => 'Δεύτερη ημέρα των Χριστουγέννων'}.each do |date, name|
|
78
|
+
assert_equal name, (Holidays.on(date, :el, :informal)[0] || {})[:name]
|
79
|
+
end
|
data/data/index.yaml
CHANGED
@@ -7,6 +7,7 @@ defs:
|
|
7
7
|
CZ: ['cz.yaml']
|
8
8
|
DK: ['dk.yaml']
|
9
9
|
DE: ['de.yaml']
|
10
|
+
EL: ['el.yaml']
|
10
11
|
ES: ['es.yaml']
|
11
12
|
FI: ['fi.yaml']
|
12
13
|
FR: ['fr.yaml']
|
@@ -27,5 +28,5 @@ defs:
|
|
27
28
|
ZA: ['za.yaml']
|
28
29
|
North_America: ['ca.yaml', 'mx.yaml', 'us.yaml', 'north_america_informal.yaml']
|
29
30
|
Scandinavia: ['dk.yaml', 'is.yaml', 'no.yaml', 'se.yaml', 'fi.yaml']
|
30
|
-
Europe: ['cz.yaml', 'dk.yaml', 'de.yaml', 'es.yaml', 'fr.yaml', 'gb.yaml', 'ie.yaml', 'is.yaml', 'it.yaml', 'nl.yaml', 'no.yaml', 'pt.yaml']
|
31
|
+
Europe: ['cz.yaml', 'dk.yaml', 'de.yaml', 'el.yaml', 'es.yaml', 'fr.yaml', 'gb.yaml', 'ie.yaml', 'is.yaml', 'it.yaml', 'nl.yaml', 'no.yaml', 'pt.yaml']
|
31
32
|
JP: ['jp.yaml']
|
data/holidays.gemspec
CHANGED
@@ -1,155 +1,161 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in rakefile.rb, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in rakefile.rb, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{holidays}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alex Dunae", "Rowan Crawford"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-13}
|
13
13
|
s.description = %q{A collection of Ruby methods to deal with statutory and other holidays. You deserve a holiday!}
|
14
14
|
s.email = %q{code@dunae.ca}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
|
-
"
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
20
|
+
".gitignore",
|
21
|
+
"CHANGELOG",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"REFERENCES",
|
25
|
+
"data/SYNTAX.rdoc",
|
26
|
+
"data/au.yaml",
|
27
|
+
"data/br.yaml",
|
28
|
+
"data/build_defs.rb",
|
29
|
+
"data/ca.yaml",
|
30
|
+
"data/cz.yaml",
|
31
|
+
"data/de.yaml",
|
32
|
+
"data/dk.yaml",
|
33
|
+
"data/el.yaml",
|
34
|
+
"data/es.yaml",
|
35
|
+
"data/fi.yaml",
|
36
|
+
"data/fr.yaml",
|
37
|
+
"data/gb.yaml",
|
38
|
+
"data/ie.yaml",
|
39
|
+
"data/index.yaml",
|
40
|
+
"data/is.yaml",
|
41
|
+
"data/it.yaml",
|
42
|
+
"data/jp.yaml",
|
43
|
+
"data/mx.yaml",
|
44
|
+
"data/nl.yaml",
|
45
|
+
"data/no.yaml",
|
46
|
+
"data/north_america_informal.yaml",
|
47
|
+
"data/nyse.yaml",
|
48
|
+
"data/nz.yaml",
|
49
|
+
"data/pt.yaml",
|
50
|
+
"data/se.yaml",
|
51
|
+
"data/united_nations.yaml",
|
52
|
+
"data/ups.yaml",
|
53
|
+
"data/us.yaml",
|
54
|
+
"data/za.yaml",
|
55
|
+
"holidays.gemspec",
|
56
|
+
"lib/holidays.rb",
|
57
|
+
"lib/holidays/MANIFEST",
|
58
|
+
"lib/holidays/au.rb",
|
59
|
+
"lib/holidays/br.rb",
|
60
|
+
"lib/holidays/ca.rb",
|
61
|
+
"lib/holidays/cz.rb",
|
62
|
+
"lib/holidays/de.rb",
|
63
|
+
"lib/holidays/dk.rb",
|
64
|
+
"lib/holidays/el.rb",
|
65
|
+
"lib/holidays/es.rb",
|
66
|
+
"lib/holidays/europe.rb",
|
67
|
+
"lib/holidays/fi.rb",
|
68
|
+
"lib/holidays/fr.rb",
|
69
|
+
"lib/holidays/gb.rb",
|
70
|
+
"lib/holidays/ie.rb",
|
71
|
+
"lib/holidays/is.rb",
|
72
|
+
"lib/holidays/it.rb",
|
73
|
+
"lib/holidays/jp.rb",
|
74
|
+
"lib/holidays/mx.rb",
|
75
|
+
"lib/holidays/nl.rb",
|
76
|
+
"lib/holidays/no.rb",
|
77
|
+
"lib/holidays/north_america.rb",
|
78
|
+
"lib/holidays/nyse.rb",
|
79
|
+
"lib/holidays/nz.rb",
|
80
|
+
"lib/holidays/pt.rb",
|
81
|
+
"lib/holidays/scandinavia.rb",
|
82
|
+
"lib/holidays/se.rb",
|
83
|
+
"lib/holidays/united_nations.rb",
|
84
|
+
"lib/holidays/ups.rb",
|
85
|
+
"lib/holidays/us.rb",
|
86
|
+
"lib/holidays/za.rb",
|
87
|
+
"rakefile.rb",
|
88
|
+
"test/defs/test_defs_au.rb",
|
89
|
+
"test/defs/test_defs_br.rb",
|
90
|
+
"test/defs/test_defs_ca.rb",
|
91
|
+
"test/defs/test_defs_cz.rb",
|
92
|
+
"test/defs/test_defs_de.rb",
|
93
|
+
"test/defs/test_defs_dk.rb",
|
94
|
+
"test/defs/test_defs_el.rb",
|
95
|
+
"test/defs/test_defs_es.rb",
|
96
|
+
"test/defs/test_defs_europe.rb",
|
97
|
+
"test/defs/test_defs_fi.rb",
|
98
|
+
"test/defs/test_defs_fr.rb",
|
99
|
+
"test/defs/test_defs_gb.rb",
|
100
|
+
"test/defs/test_defs_ie.rb",
|
101
|
+
"test/defs/test_defs_is.rb",
|
102
|
+
"test/defs/test_defs_it.rb",
|
103
|
+
"test/defs/test_defs_jp.rb",
|
104
|
+
"test/defs/test_defs_mx.rb",
|
105
|
+
"test/defs/test_defs_nl.rb",
|
106
|
+
"test/defs/test_defs_no.rb",
|
107
|
+
"test/defs/test_defs_north_america.rb",
|
108
|
+
"test/defs/test_defs_nyse.rb",
|
109
|
+
"test/defs/test_defs_nz.rb",
|
110
|
+
"test/defs/test_defs_pt.rb",
|
111
|
+
"test/defs/test_defs_scandinavia.rb",
|
112
|
+
"test/defs/test_defs_se.rb",
|
113
|
+
"test/defs/test_defs_ups.rb",
|
114
|
+
"test/defs/test_defs_us.rb",
|
115
|
+
"test/defs/test_defs_za.rb",
|
116
|
+
"test/test_date.rb",
|
117
|
+
"test/test_helper.rb",
|
118
|
+
"test/test_holidays.rb",
|
119
|
+
"test/test_multiple_regions.rb"
|
116
120
|
]
|
117
121
|
s.homepage = %q{https://github.com/alexdunae/holidays}
|
122
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
118
123
|
s.require_paths = ["lib"]
|
119
124
|
s.rubygems_version = %q{1.3.7}
|
120
125
|
s.summary = %q{A collection of Ruby methods to deal with statutory and other holidays. You deserve a holiday!}
|
121
126
|
s.test_files = [
|
122
127
|
"test/defs/test_defs_au.rb",
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
128
|
+
"test/defs/test_defs_br.rb",
|
129
|
+
"test/defs/test_defs_ca.rb",
|
130
|
+
"test/defs/test_defs_cz.rb",
|
131
|
+
"test/defs/test_defs_de.rb",
|
132
|
+
"test/defs/test_defs_dk.rb",
|
133
|
+
"test/defs/test_defs_el.rb",
|
134
|
+
"test/defs/test_defs_es.rb",
|
135
|
+
"test/defs/test_defs_europe.rb",
|
136
|
+
"test/defs/test_defs_fi.rb",
|
137
|
+
"test/defs/test_defs_fr.rb",
|
138
|
+
"test/defs/test_defs_gb.rb",
|
139
|
+
"test/defs/test_defs_ie.rb",
|
140
|
+
"test/defs/test_defs_is.rb",
|
141
|
+
"test/defs/test_defs_it.rb",
|
142
|
+
"test/defs/test_defs_jp.rb",
|
143
|
+
"test/defs/test_defs_mx.rb",
|
144
|
+
"test/defs/test_defs_nl.rb",
|
145
|
+
"test/defs/test_defs_no.rb",
|
146
|
+
"test/defs/test_defs_north_america.rb",
|
147
|
+
"test/defs/test_defs_nyse.rb",
|
148
|
+
"test/defs/test_defs_nz.rb",
|
149
|
+
"test/defs/test_defs_pt.rb",
|
150
|
+
"test/defs/test_defs_scandinavia.rb",
|
151
|
+
"test/defs/test_defs_se.rb",
|
152
|
+
"test/defs/test_defs_ups.rb",
|
153
|
+
"test/defs/test_defs_us.rb",
|
154
|
+
"test/defs/test_defs_za.rb",
|
155
|
+
"test/test_date.rb",
|
156
|
+
"test/test_helper.rb",
|
157
|
+
"test/test_holidays.rb",
|
158
|
+
"test/test_multiple_regions.rb"
|
153
159
|
]
|
154
160
|
|
155
161
|
if s.respond_to? :specification_version then
|
data/lib/holidays.rb
CHANGED
@@ -43,7 +43,7 @@ module Holidays
|
|
43
43
|
# Exception thrown when an unknown region is requested.
|
44
44
|
class UnknownRegionError < ArgumentError; end
|
45
45
|
|
46
|
-
VERSION = '1.0.
|
46
|
+
VERSION = '1.0.2'
|
47
47
|
|
48
48
|
@@regions = []
|
49
49
|
@@holidays_by_month = {}
|
@@ -211,6 +211,33 @@ module Holidays
|
|
211
211
|
day = ((h + l - 7 * m + 114) % 31) + 1
|
212
212
|
Date.civil(year, month, day)
|
213
213
|
end
|
214
|
+
|
215
|
+
# A method to calculate the orthodox easter date, returns date in the Gregorian (western) calendar
|
216
|
+
# Safe until appr. 4100 AD, when one leap day will be removed.
|
217
|
+
# Returns a Date object.
|
218
|
+
def self.orthodox_easter(year)
|
219
|
+
y = year
|
220
|
+
g = y % 19
|
221
|
+
i = (19 * g + 15) % 30
|
222
|
+
j = (year + year/4 + i) % 7
|
223
|
+
j_month = 3 + (i - j + 40) / 44
|
224
|
+
j_day = i - j + 28 - 31 * (j_month / 4)
|
225
|
+
j_date = Date.civil(year, j_month, j_day)
|
226
|
+
case
|
227
|
+
# up until 1582, julian and gregorian easter dates were identical
|
228
|
+
when year <= 1582
|
229
|
+
offset = 0
|
230
|
+
# between the years 1583 and 1699 10 days are added to the julian day count
|
231
|
+
when (year >= 1583 and year <= 1699)
|
232
|
+
offset = 10
|
233
|
+
# after 1700, 1 day is added for each century, except if the century year is exactly divisible by 400 (in which case no days are added).
|
234
|
+
# Safe until 4100 AD, when one leap day will be removed.
|
235
|
+
when year >= 1700
|
236
|
+
offset = (year - 1700).divmod(100)[0] + ((year - year.divmod(100)[1]).divmod(400)[1] == 0 ? 0 : 1) - (year - year.divmod(100)[1] - 1700).divmod(400)[0] + 10
|
237
|
+
end
|
238
|
+
# add offset to the julian day
|
239
|
+
return Date.jd(j_date.jd + offset)
|
240
|
+
end
|
214
241
|
|
215
242
|
# Move date to Monday if it occurs on a Sunday.
|
216
243
|
# Used as a callback function.
|