holiday_japan 1.2.5 → 1.3.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +89 -76
  3. data/lib/holiday_japan.rb +28 -5
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 480678c4f9d133e1c3e1f00b3c9f2ae243c2ea61
4
- data.tar.gz: 898a499852f5c0d021c195e8be2b0348ac5b3a7d
3
+ metadata.gz: dd7d03465f889396be6264be771d19d0f7a3f71a
4
+ data.tar.gz: 5c0f49346d750e16dd3a9a8c3e6a939ebaa6c17a
5
5
  SHA512:
6
- metadata.gz: 23bc99e34b78d3dae93c091cc04670f72384ef75e2919771b83d6c2c79204cc68a5595f37af759648d7988acd0940ba69c6e486809d78d70fedba323745c9b9d
7
- data.tar.gz: 66b1d2337908784e4f73641c20588ee28d59b28a67565e5ac40854a576acc416213893448910943db317add1578658eefab3140529e9f185a57f29a7046035b2
6
+ metadata.gz: 74ed1f4f406eb301a75a6671baaa52e0276cfc297e389af8b9456f7a88333ea976e407c6083f0c44d57a1ee02e2c5de0394999150248f92f80ac5351f9fded31
7
+ data.tar.gz: bd007cbe4385ac145a49c6c1cb5d91ebeff72429032b3fb6da5ebe54600c88952a2166026fee65c5bedbbd3e19259cd401f34ae6fc886c4721b040fe516d4652
data/README.md CHANGED
@@ -4,7 +4,8 @@
4
4
  ([RubyGems](https://rubygems.org/gems/holiday_japan))
5
5
 
6
6
  ## 特徴
7
- * 1948年7月20日以降の日本の国民の祝日、振替休日、および国民の休日を計算して判定する
7
+ * 1948年7月20日以降の日本の国民の祝日、振替休日、および国民の休日を計算して判定。
8
+ * スクリプトコード([holiday_japan.rb](https://github.com/masa16/holiday_japan/blob/master/lib/holiday_japan.rb))は、祝日データを含めて200行弱とコンパクト。
8
9
 
9
10
  (date2 の holiday.rb と比較して)
10
11
  * 祝日をキャッシュすることにより、大量の日付について祝日判定する場合でも高速に動作
@@ -34,108 +35,119 @@
34
35
  * `check(date)` ― Dateクラスのオブジェクトによる祝日判定
35
36
 
36
37
  ```ruby
37
- HolidayJapan.check(Date.new(2017,3,20))
38
+ HolidayJapan.check(Date.new(2018,3,21))
38
39
  => true
39
40
  ```
40
41
 
41
42
  * `name(date)` ― 日付が祝日の場合は祝日名を返し、祝日でなければ nil を返す。
42
43
 
43
44
  ```ruby
44
- HolidayJapan.name(Date.new(2017,3,20))
45
+ HolidayJapan.name(Date.new(2018,3,21))
45
46
  => "春分の日"
46
47
  ```
47
48
 
48
49
  * `print_year(year)` ― ある年の祝日一覧をプリント
49
50
 
50
51
  ```
51
- $ ruby -r holiday_japan -e 'HolidayJapan.print_year 2017'
52
- listing year 2017...
53
- 2017-01-01 Sun 元日
54
- 2017-01-02 Mon 振替休日
55
- 2017-01-09 Mon 成人の日
56
- 2017-02-11 Sat 建国記念の日
57
- 2017-03-20 Mon 春分の日
58
- 2017-04-29 Sat 昭和の日
59
- 2017-05-03 Wed 憲法記念日
60
- 2017-05-04 Thu みどりの日
61
- 2017-05-05 Fri こどもの日
62
- 2017-07-17 Mon 海の日
63
- 2017-08-11 Fri 山の日
64
- 2017-09-18 Mon 敬老の日
65
- 2017-09-23 Sat 秋分の日
66
- 2017-10-09 Mon 体育の日
67
- 2017-11-03 Fri 文化の日
68
- 2017-11-23 Thu 勤労感謝の日
69
- 2017-12-23 Sat 天皇誕生日
52
+ $ ruby -r holiday_japan -e 'HolidayJapan.print_year 2018'
53
+ listing year 2018...
54
+ 2018-01-01 Mon 元日
55
+ 2018-01-08 Mon 成人の日
56
+ 2018-02-11 Sun 建国記念の日
57
+ 2018-02-12 Mon 振替休日
58
+ 2018-03-21 Wed 春分の日
59
+ 2018-04-29 Sun 昭和の日
60
+ 2018-04-30 Mon 振替休日
61
+ 2018-05-03 Thu 憲法記念日
62
+ 2018-05-04 Fri みどりの日
63
+ 2018-05-05 Sat こどもの日
64
+ 2018-07-16 Mon 海の日
65
+ 2018-08-11 Sat 山の日
66
+ 2018-09-17 Mon 敬老の日
67
+ 2018-09-23 Sun 秋分の日
68
+ 2018-09-24 Mon 振替休日
69
+ 2018-10-08 Mon 体育の日
70
+ 2018-11-03 Sat 文化の日
71
+ 2018-11-23 Fri 勤労感謝の日
72
+ 2018-12-23 Sun 天皇誕生日
73
+ 2018-12-24 Mon 振替休日
70
74
  ```
71
75
 
72
76
  * `list_year(year)` ― ある年について、 [日付, 祝日名] のArrayを返す
73
77
 
74
78
  ```ruby
75
- HolidayJapan.list_year(2017)
76
- => [[#<Date: 2017-01-01 ((2457755j,0s,0n),+0s,2299161j)>, "元日"],
77
- [#<Date: 2017-01-02 ((2457756j,0s,0n),+0s,2299161j)>, "振替休日"],
78
- [#<Date: 2017-01-09 ((2457763j,0s,0n),+0s,2299161j)>, "成人の日"],
79
- [#<Date: 2017-02-11 ((2457796j,0s,0n),+0s,2299161j)>, "建国記念の日"],
80
- [#<Date: 2017-03-20 ((2457833j,0s,0n),+0s,2299161j)>, "春分の日"],
81
- [#<Date: 2017-04-29 ((2457873j,0s,0n),+0s,2299161j)>, "昭和の日"],
82
- [#<Date: 2017-05-03 ((2457877j,0s,0n),+0s,2299161j)>, "憲法記念日"],
83
- [#<Date: 2017-05-04 ((2457878j,0s,0n),+0s,2299161j)>, "みどりの日"],
84
- [#<Date: 2017-05-05 ((2457879j,0s,0n),+0s,2299161j)>, "こどもの日"],
85
- [#<Date: 2017-07-17 ((2457952j,0s,0n),+0s,2299161j)>, "海の日"],
86
- [#<Date: 2017-08-11 ((2457977j,0s,0n),+0s,2299161j)>, "山の日"],
87
- [#<Date: 2017-09-18 ((2458015j,0s,0n),+0s,2299161j)>, "敬老の日"],
88
- [#<Date: 2017-09-23 ((2458020j,0s,0n),+0s,2299161j)>, "秋分の日"],
89
- [#<Date: 2017-10-09 ((2458036j,0s,0n),+0s,2299161j)>, "体育の日"],
90
- [#<Date: 2017-11-03 ((2458061j,0s,0n),+0s,2299161j)>, "文化の日"],
91
- [#<Date: 2017-11-23 ((2458081j,0s,0n),+0s,2299161j)>, "勤労感謝の日"],
92
- [#<Date: 2017-12-23 ((2458111j,0s,0n),+0s,2299161j)>, "天皇誕生日"]]
79
+ HolidayJapan.list_year(2018)
80
+ => [[#<Date: 2018-01-01 ((2458120j,0s,0n),+0s,2299161j)>, "元日"],
81
+ [#<Date: 2018-01-08 ((2458127j,0s,0n),+0s,2299161j)>, "成人の日"],
82
+ [#<Date: 2018-02-11 ((2458161j,0s,0n),+0s,2299161j)>, "建国記念の日"],
83
+ [#<Date: 2018-02-12 ((2458162j,0s,0n),+0s,2299161j)>, "振替休日"],
84
+ [#<Date: 2018-03-21 ((2458199j,0s,0n),+0s,2299161j)>, "春分の日"],
85
+ [#<Date: 2018-04-29 ((2458238j,0s,0n),+0s,2299161j)>, "昭和の日"],
86
+ [#<Date: 2018-04-30 ((2458239j,0s,0n),+0s,2299161j)>, "振替休日"],
87
+ [#<Date: 2018-05-03 ((2458242j,0s,0n),+0s,2299161j)>, "憲法記念日"],
88
+ [#<Date: 2018-05-04 ((2458243j,0s,0n),+0s,2299161j)>, "みどりの日"],
89
+ [#<Date: 2018-05-05 ((2458244j,0s,0n),+0s,2299161j)>, "こどもの日"],
90
+ [#<Date: 2018-07-16 ((2458316j,0s,0n),+0s,2299161j)>, "海の日"],
91
+ [#<Date: 2018-08-11 ((2458342j,0s,0n),+0s,2299161j)>, "山の日"],
92
+ [#<Date: 2018-09-17 ((2458379j,0s,0n),+0s,2299161j)>, "敬老の日"],
93
+ [#<Date: 2018-09-23 ((2458385j,0s,0n),+0s,2299161j)>, "秋分の日"],
94
+ [#<Date: 2018-09-24 ((2458386j,0s,0n),+0s,2299161j)>, "振替休日"],
95
+ [#<Date: 2018-10-08 ((2458400j,0s,0n),+0s,2299161j)>, "体育の日"],
96
+ [#<Date: 2018-11-03 ((2458426j,0s,0n),+0s,2299161j)>, "文化の日"],
97
+ [#<Date: 2018-11-23 ((2458446j,0s,0n),+0s,2299161j)>, "勤労感謝の日"],
98
+ [#<Date: 2018-12-23 ((2458476j,0s,0n),+0s,2299161j)>, "天皇誕生日"],
99
+ [#<Date: 2018-12-24 ((2458477j,0s,0n),+0s,2299161j)>, "振替休日"]]
93
100
  ```
94
101
 
95
102
  * `hash_year(year)` ― ある年について、 {日付=>祝日名} のHashを返す
96
103
 
97
104
  ```ruby
98
- HolidayJapan.hash_year(2017)
99
- => {#<Date: 2017-01-01 ((2457755j,0s,0n),+0s,2299161j)>=>"元日",
100
- #<Date: 2017-01-09 ((2457763j,0s,0n),+0s,2299161j)>=>"成人の日",
101
- #<Date: 2017-02-11 ((2457796j,0s,0n),+0s,2299161j)>=>"建国記念の日",
102
- #<Date: 2017-04-29 ((2457873j,0s,0n),+0s,2299161j)>=>"昭和の日",
103
- #<Date: 2017-05-03 ((2457877j,0s,0n),+0s,2299161j)>=>"憲法記念日",
104
- #<Date: 2017-05-04 ((2457878j,0s,0n),+0s,2299161j)>=>"みどりの日",
105
- #<Date: 2017-05-05 ((2457879j,0s,0n),+0s,2299161j)>=>"こどもの日",
106
- #<Date: 2017-07-17 ((2457952j,0s,0n),+0s,2299161j)>=>"海の日",
107
- #<Date: 2017-08-11 ((2457977j,0s,0n),+0s,2299161j)>=>"山の日",
108
- #<Date: 2017-09-18 ((2458015j,0s,0n),+0s,2299161j)>=>"敬老の日",
109
- #<Date: 2017-10-09 ((2458036j,0s,0n),+0s,2299161j)>=>"体育の日",
110
- #<Date: 2017-11-03 ((2458061j,0s,0n),+0s,2299161j)>=>"文化の日",
111
- #<Date: 2017-11-23 ((2458081j,0s,0n),+0s,2299161j)>=>"勤労感謝の日",
112
- #<Date: 2017-12-23 ((2458111j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
113
- #<Date: 2017-03-20 ((2457833j,0s,0n),+0s,2299161j)>=>"春分の日",
114
- #<Date: 2017-09-23 ((2458020j,0s,0n),+0s,2299161j)>=>"秋分の日",
115
- #<Date: 2017-01-02 ((2457756j,0s,0n),+0s,2299161j)>=>"振替休日"}
105
+ HolidayJapan.hash_year(2018)
106
+ => {#<Date: 2018-01-01 ((2458120j,0s,0n),+0s,2299161j)>=>"元日",
107
+ #<Date: 2018-01-08 ((2458127j,0s,0n),+0s,2299161j)>=>"成人の日",
108
+ #<Date: 2018-02-11 ((2458161j,0s,0n),+0s,2299161j)>=>"建国記念の日",
109
+ #<Date: 2018-02-12 ((2458162j,0s,0n),+0s,2299161j)>=>"振替休日",
110
+ #<Date: 2018-03-21 ((2458199j,0s,0n),+0s,2299161j)>=>"春分の日",
111
+ #<Date: 2018-04-29 ((2458238j,0s,0n),+0s,2299161j)>=>"昭和の日",
112
+ #<Date: 2018-04-30 ((2458239j,0s,0n),+0s,2299161j)>=>"振替休日",
113
+ #<Date: 2018-05-03 ((2458242j,0s,0n),+0s,2299161j)>=>"憲法記念日",
114
+ #<Date: 2018-05-04 ((2458243j,0s,0n),+0s,2299161j)>=>"みどりの日",
115
+ #<Date: 2018-05-05 ((2458244j,0s,0n),+0s,2299161j)>=>"こどもの日",
116
+ #<Date: 2018-07-16 ((2458316j,0s,0n),+0s,2299161j)>=>"海の日",
117
+ #<Date: 2018-08-11 ((2458342j,0s,0n),+0s,2299161j)>=>"山の日",
118
+ #<Date: 2018-09-17 ((2458379j,0s,0n),+0s,2299161j)>=>"敬老の日",
119
+ #<Date: 2018-09-23 ((2458385j,0s,0n),+0s,2299161j)>=>"秋分の日",
120
+ #<Date: 2018-09-24 ((2458386j,0s,0n),+0s,2299161j)>=>"振替休日",
121
+ #<Date: 2018-10-08 ((2458400j,0s,0n),+0s,2299161j)>=>"体育の日",
122
+ #<Date: 2018-11-03 ((2458426j,0s,0n),+0s,2299161j)>=>"文化の日",
123
+ #<Date: 2018-11-23 ((2458446j,0s,0n),+0s,2299161j)>=>"勤労感謝の日",
124
+ #<Date: 2018-12-23 ((2458476j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
125
+ #<Date: 2018-12-24 ((2458477j,0s,0n),+0s,2299161j)>=>"振替休日"}
116
126
  ```
117
127
 
118
128
  * `between(from_date,to_date)` ― from_date から to_date までの祝日について、{日付=>祝日名}のHashを返す
119
129
 
120
130
  ```ruby
121
- HolidayJapan.between(Date.new(2017,4,1),Date.new(2018,3,31))
122
- => {#<Date: 2017-04-29 ((2457873j,0s,0n),+0s,2299161j)>=>"昭和の日",
123
- #<Date: 2017-05-03 ((2457877j,0s,0n),+0s,2299161j)>=>"憲法記念日",
124
- #<Date: 2017-05-04 ((2457878j,0s,0n),+0s,2299161j)>=>"みどりの日",
125
- #<Date: 2017-05-05 ((2457879j,0s,0n),+0s,2299161j)>=>"こどもの日",
126
- #<Date: 2017-07-17 ((2457952j,0s,0n),+0s,2299161j)>=>"海の日",
127
- #<Date: 2017-08-11 ((2457977j,0s,0n),+0s,2299161j)>=>"山の日",
128
- #<Date: 2017-09-18 ((2458015j,0s,0n),+0s,2299161j)>=>"敬老の日",
129
- #<Date: 2017-10-09 ((2458036j,0s,0n),+0s,2299161j)>=>"体育の日",
130
- #<Date: 2017-11-03 ((2458061j,0s,0n),+0s,2299161j)>=>"文化の日",
131
- #<Date: 2017-11-23 ((2458081j,0s,0n),+0s,2299161j)>=>"勤労感謝の日",
132
- #<Date: 2017-12-23 ((2458111j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
133
- #<Date: 2017-09-23 ((2458020j,0s,0n),+0s,2299161j)>=>"秋分の日",
134
- #<Date: 2018-01-01 ((2458120j,0s,0n),+0s,2299161j)>=>"元日",
135
- #<Date: 2018-01-08 ((2458127j,0s,0n),+0s,2299161j)>=>"成人の日",
136
- #<Date: 2018-02-11 ((2458161j,0s,0n),+0s,2299161j)>=>"建国記念の日",
137
- #<Date: 2018-03-21 ((2458199j,0s,0n),+0s,2299161j)>=>"春分の日",
138
- #<Date: 2018-02-12 ((2458162j,0s,0n),+0s,2299161j)>=>"振替休日"}
131
+ HolidayJapan.between("2018-4-1","2019-3-31")
132
+ => {#<Date: 2018-04-29 ((2458238j,0s,0n),+0s,2299161j)>=>"昭和の日",
133
+ #<Date: 2018-04-30 ((2458239j,0s,0n),+0s,2299161j)>=>"振替休日",
134
+ #<Date: 2018-05-03 ((2458242j,0s,0n),+0s,2299161j)>=>"憲法記念日",
135
+ #<Date: 2018-05-04 ((2458243j,0s,0n),+0s,2299161j)>=>"みどりの日",
136
+ #<Date: 2018-05-05 ((2458244j,0s,0n),+0s,2299161j)>=>"こどもの日",
137
+ #<Date: 2018-07-16 ((2458316j,0s,0n),+0s,2299161j)>=>"海の日",
138
+ #<Date: 2018-08-11 ((2458342j,0s,0n),+0s,2299161j)>=>"山の日",
139
+ #<Date: 2018-09-17 ((2458379j,0s,0n),+0s,2299161j)>=>"敬老の日",
140
+ #<Date: 2018-09-23 ((2458385j,0s,0n),+0s,2299161j)>=>"秋分の日",
141
+ #<Date: 2018-09-24 ((2458386j,0s,0n),+0s,2299161j)>=>"振替休日",
142
+ #<Date: 2018-10-08 ((2458400j,0s,0n),+0s,2299161j)>=>"体育の日",
143
+ #<Date: 2018-11-03 ((2458426j,0s,0n),+0s,2299161j)>=>"文化の日",
144
+ #<Date: 2018-11-23 ((2458446j,0s,0n),+0s,2299161j)>=>"勤労感謝の日",
145
+ #<Date: 2018-12-23 ((2458476j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
146
+ #<Date: 2018-12-24 ((2458477j,0s,0n),+0s,2299161j)>=>"振替休日",
147
+ #<Date: 2019-01-01 ((2458485j,0s,0n),+0s,2299161j)>=>"元日",
148
+ #<Date: 2019-01-14 ((2458498j,0s,0n),+0s,2299161j)>=>"成人の日",
149
+ #<Date: 2019-02-11 ((2458526j,0s,0n),+0s,2299161j)>=>"建国記念の日",
150
+ #<Date: 2019-03-21 ((2458564j,0s,0n),+0s,2299161j)>=>"春分の日"}
139
151
  ```
140
152
 
141
153
  ### 祝日データをCSVに出力
@@ -169,6 +181,7 @@
169
181
  NO WARRANTY.
170
182
 
171
183
  ## Version:
184
+ 2017-12-01 ver 1.3 print_between 関数追加
172
185
  2015-04-11 ver 1.2 hash_year, between 関数追加
173
186
  2014-05-23 ver 1.1 「山の日」追加
174
187
  2012-12-23 ver 1.0 モジュール名を Holiday から HolidayJapan に変更
data/lib/holiday_japan.rb CHANGED
@@ -6,7 +6,7 @@ require "date"
6
6
 
7
7
  module HolidayJapan
8
8
 
9
- VERSION = "1.2.5"
9
+ VERSION = "1.3.0"
10
10
 
11
11
  WEEK1 = 1
12
12
  WEEK2 = 8
@@ -21,7 +21,7 @@ module HolidayJapan
21
21
  ["成人の日", 1949..1999, 1, 15 ],
22
22
  ["成人の日", 2000..INF , 1, WEEK2, MON ],
23
23
  ["建国記念の日",1967..INF , 2, 11 ],
24
- ["天皇誕生日", 2019..INF , 2, 23 ],
24
+ ["天皇誕生日", 2020..INF , 2, 23 ],
25
25
  ["天皇誕生日", 1949..1988, 4, 29 ],
26
26
  ["みどりの日", 1989..2006, 4, 29 ],
27
27
  ["昭和の日", 2007..INF , 4, 29 ],
@@ -53,7 +53,8 @@ module HolidayJapan
53
53
  ["皇太子明仁親王の結婚の儀", 1959..1959, 4, 10 ],
54
54
  ["昭和天皇の大喪の礼", 1989..1989, 2, 24 ],
55
55
  ["即位礼正殿の儀", 1990..1990, 11, 12 ],
56
- ["皇太子徳仁親王の結婚の儀", 1993..1993, 6, 9 ]
56
+ ["皇太子徳仁親王の結婚の儀", 1993..1993, 6, 9 ],
57
+ ["即位礼正殿の儀", 2019..2019, 5, 1 ],
57
58
  ]
58
59
  DATA.each{|x| x[0].freeze; x.freeze }
59
60
  DATA.freeze
@@ -135,8 +136,24 @@ module HolidayJapan
135
136
  end
136
137
 
137
138
  def between(from_date,to_date)
138
- from_date = Date.new(from_date,1,1) if from_date.kind_of?(Integer)
139
- to_date = Date.new(to_date,12,31) if to_date.kind_of?(Integer)
139
+ case from_date
140
+ when String
141
+ from_date = Date.parse(from_date)
142
+ when Integer
143
+ from_date = Date.new(from_date,1,1)
144
+ when Date
145
+ else
146
+ raise ArgumentError, "invalid type fpr from_date"
147
+ end
148
+ case to_date
149
+ when String
150
+ to_date = Date.parse(to_date)
151
+ when Integer
152
+ to_date = Date.new(to_date,12,31)
153
+ when Date
154
+ else
155
+ raise ArgumentError, "invalid type fpr to_date"
156
+ end
140
157
  if from_date > to_date
141
158
  raise ArgumentError, "to_date is earlier than from_date"
142
159
  end
@@ -173,6 +190,12 @@ module HolidayJapan
173
190
  _print_year(year)
174
191
  end
175
192
  end
193
+
194
+ def print_between(from_date,to_date)
195
+ between(from_date,to_date).each do |y|
196
+ puts "#{y[0].strftime('%Y-%m-%d %a')} #{y[1]}"
197
+ end
198
+ end
176
199
  end
177
200
 
178
201
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holiday_japan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro TANAKA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-01 00:00:00.000000000 Z
11
+ date: 2017-12-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Calculate National Holidays of Japan between 1948..2150
14
14
  email:
@@ -44,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
44
  version: '0'
45
45
  requirements: []
46
46
  rubyforge_project:
47
- rubygems_version: 2.6.8
47
+ rubygems_version: 2.6.13
48
48
  signing_key:
49
49
  specification_version: 4
50
50
  summary: Calculate National Holidays of Japan