opening_hours_converter 1.3.2 → 1.3.3
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.
- checksums.yaml +4 -4
- data/lib/opening_hours_converter/public_holiday.rb +81 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25ce86d8ffc2ccf4916fd0bd5a333987027ce0b1
|
4
|
+
data.tar.gz: d021f421176116cc5db3f9fee21c3f00b51176bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b405cb629126f8a3b0c929efcd79deec97899d190ca62ac0b76eed79b9fa038284bccec28b4edac35d363e9c510f973997abcf158620e074799c917b743a1a2
|
7
|
+
data.tar.gz: c1bb4e43cdc27b9477871803ffe50dd90bc1249b93d743765a431369e6e2d573213b20697f72774bb3a0631da5cb1163a827a02bce25bb8926af2781c096f97a
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module OpeningHoursConverter
|
2
|
+
class PublicHoliday
|
3
|
+
def self.easter(year=Time.now.year)
|
4
|
+
# code from https://github.com/jrobertson/easter
|
5
|
+
golden_number = (year % 19) + 1
|
6
|
+
|
7
|
+
if year <= 1752 then
|
8
|
+
# Julian calendar
|
9
|
+
dominical_number = (year + (year / 4) + 5) % 7
|
10
|
+
paschal_full_moon = (3 - (11 * golden_number) - 7) % 30
|
11
|
+
else
|
12
|
+
# Gregorian calendar
|
13
|
+
dominical_number = (year + (year / 4) - (year / 100) + (year / 400)) % 7
|
14
|
+
solar_correction = (year - 1600) / 100 - (year - 1600) / 400
|
15
|
+
lunar_correction = (((year - 1400) / 100) * 8) / 25
|
16
|
+
paschal_full_moon = (3 - 11 * golden_number + solar_correction - lunar_correction) % 30
|
17
|
+
end
|
18
|
+
|
19
|
+
dominical_number += 7 until dominical_number > 0
|
20
|
+
|
21
|
+
paschal_full_moon += 30 until paschal_full_moon > 0
|
22
|
+
paschal_full_moon -= 1 if paschal_full_moon == 29 or (paschal_full_moon == 28 and golden_number > 11)
|
23
|
+
|
24
|
+
difference = (4 - paschal_full_moon - dominical_number) % 7
|
25
|
+
difference += 7 if difference < 0
|
26
|
+
|
27
|
+
day_easter = paschal_full_moon + difference + 1
|
28
|
+
|
29
|
+
if day_easter < 11 then
|
30
|
+
# Easter occurs in March.
|
31
|
+
return Time.new(year, 3, day_easter + 21)
|
32
|
+
else
|
33
|
+
# Easter occurs in April.
|
34
|
+
return Time.new(year, 4, day_easter - 10)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.easter_monday(year=Time.now.year)
|
39
|
+
easter(year) + days(1)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.good_friday(year=Time.now.year)
|
43
|
+
easter(year) - days(2)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.ascension(year=Time.now.year)
|
47
|
+
easter(year) + days(39)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.pentecote(year=Time.now.year)
|
51
|
+
easter(year) + days(49)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.pentecote_monday(year=Time.now.year)
|
55
|
+
easter(year) + days(50)
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.ph_for_year(year=Time.now.year)
|
59
|
+
ph = []
|
60
|
+
ph << Time.new(year, 1, 1)
|
61
|
+
ph << good_friday
|
62
|
+
ph << easter
|
63
|
+
ph << easter_monday
|
64
|
+
ph << Time.new(year, 5, 1)
|
65
|
+
ph << Time.new(year, 5, 8)
|
66
|
+
ph << ascension
|
67
|
+
ph << pentecote
|
68
|
+
ph << pentecote_monday
|
69
|
+
ph << Time.new(year, 7, 14)
|
70
|
+
ph << Time.new(year, 8, 15)
|
71
|
+
ph << Time.new(year, 11, 1)
|
72
|
+
ph << Time.new(year, 11, 11)
|
73
|
+
ph << Time.new(year, 12, 25)
|
74
|
+
ph.sort
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.days(days=0)
|
78
|
+
days * 24 * 60 * 60
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opening_hours_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ziserman Martin
|
@@ -28,6 +28,7 @@ files:
|
|
28
28
|
- lib/opening_hours_converter/opening_hours_parser.rb
|
29
29
|
- lib/opening_hours_converter/opening_hours_rule.rb
|
30
30
|
- lib/opening_hours_converter/opening_hours_time.rb
|
31
|
+
- lib/opening_hours_converter/public_holiday.rb
|
31
32
|
- lib/opening_hours_converter/week.rb
|
32
33
|
- lib/opening_hours_converter/wide_interval.rb
|
33
34
|
- lib/opening_hours_converter/year.rb
|