mk_cal_jpl 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff4246f870c5e44229743f3bfe184c61b3aca4481f3c007e41d24f32293b944c
4
- data.tar.gz: 5adaf2b851b905b6959807ec63a5eeb61806031b55f899388ff3b05c2920e2b4
3
+ metadata.gz: 83c9191bfe0b9a2843b0a7f0babb5308c8305078816903cd55dd6c6a03ffa2dd
4
+ data.tar.gz: 0dfe5dc82f6787ca7e252b7958ac7f9a78d6b23c585d6e5b8443c3c207ee290a
5
5
  SHA512:
6
- metadata.gz: 57d34e854bf6de74d8c4a264718cf73ce7fad2748e51caa24294e50017c8162efec77f63fb67640e2e815613605e301048c5fac0071667ccb91adec5da80a75a
7
- data.tar.gz: 76681ca2752103fb2ec426098b5d74c211e9fe7a1f266b037be0c612d8792a42f96906eed4696ae9cf89e278cf007f8598b67ae284a023ffabc48e31b233356d
6
+ metadata.gz: e445fb95dda1cdbedec14662ab9a369a2e339953740f1cd050d21e036a16affbe526f142f167fed59c343e37453d97def2d4eedf5f859fad2eb5fa6810672a59
7
+ data.tar.gz: 564a9bff2acd0e765b6e04c9cc76a1a5fa25ecd986bbd564098f6ac3410306c0a1328a478df3c0f2098376a15c1671dcd17f20039197cff6606c6711aed503fc
@@ -10,7 +10,7 @@ module MkCalJpl
10
10
  # @param: year
11
11
  # @param: month
12
12
  # @param: day
13
- # @return: holiday (漢字1文字)
13
+ # @return: holiday (漢字)
14
14
  #=========================================================================
15
15
  def compute_holiday(year, month, day)
16
16
  holidays = get_holidays(year)
@@ -23,7 +23,7 @@ module MkCalJpl
23
23
  end
24
24
  holiday = ""
25
25
  res = Const::HOLIDAY.select { |h| h[0] == code }
26
- holiday = res[0][4] unless res == []
26
+ holiday = res[0][6] unless res == []
27
27
  return holiday
28
28
  end
29
29
 
@@ -35,12 +35,13 @@ module MkCalJpl
35
35
  #=========================================================================
36
36
  def get_holidays(year)
37
37
  holiday_0 = Array.new # 変動の祝日用
38
- holiday_1 = Array.new # 国民の休日用
39
- holiday_2 = Array.new # 振替休日用
38
+ holiday_1 = Array.new # 振替休日用
39
+ holiday_2 = Array.new # 国民の休日用
40
40
 
41
41
  # 変動の祝日の日付・曜日を計算 ( 振替休日,国民の休日を除く )
42
- Const::HOLIDAY.each do |id, month, day, kbn, name|
42
+ Const::HOLIDAY.each do |id, month, day, kbn, year_s, year_e, name|
43
43
  next if kbn > 7
44
+ next if year < year_s || year_e < year
44
45
  if kbn == 0 # 月日が既定のもの
45
46
  jd_jst = gc2jd(year, month, day)
46
47
  yobi = compute_yobi(jd_jst)
@@ -76,32 +77,17 @@ module MkCalJpl
76
77
  end
77
78
  end
78
79
 
79
- # 国民の休日計算
80
- # ( 「国民の祝日」で前後を挟まれた「国民の祝日」でない日 )
81
- # ( 年またぎは考慮していない(今のところ不要) )
82
- 0.upto(holiday_0.length - 2) do |i|
83
- m_0, d_0 = holiday_0[i ][0, 2]
84
- m_1, d_1 = holiday_0[i + 1][0, 2]
85
- jd_0 = gc2jd(year, m_0, d_0)
86
- jd_1 = gc2jd(year, m_1, d_1)
87
- if jd_0 + 2 == jd_1
88
- jd = jd_0 + 1
89
- m, d = jd2ymd(jd)[1, 2]
90
- yobi = Const::YOBI[Const::YOBI.index(holiday_0[i][4]) + 1]
91
- holiday_1 << [m, d, 90, jd, yobi]
92
- end
93
- end
94
-
95
80
  # 振替休日計算
96
81
  # ( 「国民の祝日」が日曜日に当たるときは、
97
82
  # その日後においてその日に最も近い「国民の祝日」でない日 )
83
+ year_s_f = Const::HOLIDAY.select { |a| a[0] == 90 }[0][4]
98
84
  0.upto(holiday_0.length - 1) do |i|
99
85
  if holiday_0[i][4] == "日"
100
86
  next_jd = holiday_0[i][3] + 1
101
87
  next_yobi = Const::YOBI[Const::YOBI.index(holiday_0[i][4]) + 1]
102
88
  if i == holiday_0.length - 1
103
89
  wk_ymd = jd2ymd(next_jd)
104
- wk_ary = [wk_ymd[1], wk_ymd[2], 91, next_jd, next_yobi]
90
+ wk_ary = [wk_ymd[1], wk_ymd[2], 90, next_jd, next_yobi]
105
91
  else
106
92
  flg_furikae = 0
107
93
  plus_day = 1
@@ -115,15 +101,32 @@ module MkCalJpl
115
101
  else
116
102
  flg_furikae = 1
117
103
  wk_ymd = jd2ymd(next_jd)
118
- wk_ary =[wk_ymd[1], wk_ymd[2], 91, next_jd, next_yobi]
104
+ wk_ary =[wk_ymd[1], wk_ymd[2], 90, next_jd, next_yobi]
119
105
  end
120
106
  end
121
107
  end
122
108
  end
123
- holiday_2 << wk_ary
109
+ holiday_1 << wk_ary
124
110
  end
125
- end
126
- return (holiday_0 + holiday_1 + holiday_2).sort
111
+ end if year >= year_s_f
112
+
113
+ # 国民の休日計算
114
+ # ( 「国民の祝日」で前後を挟まれた「国民の祝日」でない日 )
115
+ # ( 年またぎは考慮していない(今のところ不要) )
116
+ year_s_k = Const::HOLIDAY.select { |a| a[0] == 91 }[0][4]
117
+ 0.upto(holiday_0.length - 2) do |i|
118
+ m_0, d_0 = holiday_0[i ][0, 2]
119
+ m_1, d_1 = holiday_0[i + 1][0, 2]
120
+ jd_0 = gc2jd(year, m_0, d_0)
121
+ jd_1 = gc2jd(year, m_1, d_1)
122
+ if jd_0 + 2 == jd_1
123
+ jd = jd_0 + 1
124
+ m, d = jd2ymd(jd)[1, 2]
125
+ yobi = Const::YOBI[Const::YOBI.index(holiday_0[i][4]) + 1]
126
+ holiday_2 << [m, d, 91, jd, yobi]
127
+ end
128
+ end if year >= year_s_k
129
+ return merge_sort(holiday_0, holiday_1, holiday_2)
127
130
  end
128
131
 
129
132
  #=========================================================================
@@ -153,12 +156,16 @@ module MkCalJpl
153
156
  lsun_today = compute_lambda(jd)
154
157
  # 計算対象日の翌日の太陽の黄経
155
158
  lsun_tomorrow = compute_lambda(jd + 1)
159
+ # ====[ 190919:DEL ]===>
156
160
  # 計算対象日の5日前の太陽の黄経(社日計算用)
157
- lsun_before_5 = compute_lambda(jd - 5)
161
+ #lsun_before_5 = compute_lambda(jd - 5)
162
+ # <===[ 190919:DEL ]====
158
163
  # 計算対象日の4日前の太陽の黄経(社日計算用)
159
164
  lsun_before_4 = compute_lambda(jd - 4)
165
+ # ====[ 190919:DEL ]===>
160
166
  # 計算対象日の5日後の太陽の黄経(社日計算用)
161
- lsun_after_5 = compute_lambda(jd + 5)
167
+ #lsun_after_5 = compute_lambda(jd + 5)
168
+ # <===[ 190919:DEL ]====
162
169
  # 計算対象日の6日後の太陽の黄経(社日計算用)
163
170
  lsun_after_6 = compute_lambda(jd + 6)
164
171
  # 太陽の黄経の整数部分( 土用, 入梅, 半夏生 計算用 )
@@ -202,14 +209,19 @@ module MkCalJpl
202
209
  if compute_sekki_24(jd + 5) == "春分"
203
210
  # 春分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
204
211
  # 0度(360度)以上なら、春分点が午前と判断
205
- zassetsu << 4 if (lsun_after_5 + lsun_after_6 + 360) / 2.0 >= 360
206
- end
207
- # [ 5日前 ]
208
- if compute_sekki_24(jd - 5) == "春分"
209
- # 春分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
210
- # 0度(360度)未満なら、春分点が午後と判断
211
- zassetsu << 4 if (lsun_before_4 + lsun_before_5 + 360) / 2.0 < 360
212
+ # ====[ 190919:UPD ]===>
213
+ #zassetsu << 4 if (lsun_after_5 + lsun_after_6 + 360) / 2.0 >= 360
214
+ zassetsu << 4
215
+ # <===[ 190919:UPD ]===~
212
216
  end
217
+ # ====[ 190919:DEL ]===>
218
+ ## [ 5日前 ]
219
+ #if compute_sekki_24(jd - 5) == "春分"
220
+ # # 春分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
221
+ # # 0度(360度)未満なら、春分点が午後と判断
222
+ # zassetsu << 4 if (lsun_before_4 + lsun_before_5 + 360) / 2.0 < 360
223
+ #end
224
+ # <===[ 190919:DEL ]===~
213
225
  end
214
226
  # 5:土用入(春) ( 黄経(太陽) = 27度 )
215
227
  unless lsun_today0 == lsun_tomorrow0
@@ -267,14 +279,19 @@ module MkCalJpl
267
279
  if compute_sekki_24(jd + 5) == "秋分"
268
280
  # 秋分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
269
281
  # 180度以上なら、秋分点が午前と判断
270
- zassetsu << 15 if (lsun_after_5 + lsun_after_6) / 2.0 >= 180
271
- end
272
- # [ 5日前 ]
273
- if compute_sekki_24(jd - 5) == "秋分"
274
- # 秋分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
275
- # 180度未満なら、秋分点が午後と判断
276
- zassetsu << 15 if (lsun_before_4 + lsun_before_5) / 2.0 < 180
282
+ # ====[ 190919:UPD ]===>
283
+ #zassetsu << 15 if (lsun_after_5 + lsun_after_6) / 2.0 >= 180
284
+ zassetsu << 15
285
+ # <===[ 190919:UPD ]====
277
286
  end
287
+ # ====[ 190919:DEL ]===>
288
+ ## [ 5日前 ]
289
+ #if compute_sekki_24(jd - 5) == "秋分"
290
+ # # 秋分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
291
+ # # 180度未満なら、秋分点が午後と判断
292
+ # zassetsu << 15 if (lsun_before_4 + lsun_before_5) / 2.0 < 180
293
+ #end
294
+ # <===[ 190919:DEL ]====
278
295
  end
279
296
  # 16:土用入(秋) ( 黄経(太陽) = 207度 )
280
297
  unless lsun_today0 == lsun_tomorrow0
@@ -658,6 +675,27 @@ module MkCalJpl
658
675
  lmd = a.moon[1][0] * 180.0 / Math::PI
659
676
  return lmd
660
677
  end
678
+
679
+ private
680
+
681
+ # マージ&ソート
682
+ # * さらに、「振替休日」と「国民の休日」がダブる場合は、
683
+ # 「振替休日」を優先
684
+ def merge_sort(hol_0, hol_1, hol_2)
685
+ data = Array.new
686
+ data_src = (hol_0 + hol_1 + hol_2).sort
687
+ data_src.each_with_index do |d, i|
688
+ if i == 0
689
+ data << d
690
+ next
691
+ end
692
+ if data_src[i - 1][0..2] == d[0..2]
693
+ next if data_src[i - 1][3] == 90 && d[3] == 91
694
+ end
695
+ data << d
696
+ end
697
+ return data
698
+ end
661
699
  end
662
700
  end
663
701
 
@@ -37,24 +37,43 @@ module MkCalJpl
37
37
  "土用入(秋)", "土用入(冬)"
38
38
  ]
39
39
  HOLIDAY = [
40
- [ 0, 1, 1, 0, "元日" ],
41
- [ 1, 1, 0, 2, "成人の日" ],
42
- [ 2, 2, 11, 0, "建国記念の日"],
43
- [ 3, 3, 0, 4, "春分の日" ],
44
- [ 4, 4, 29, 0, "昭和の日" ],
45
- [ 5, 5, 3, 0, "憲法記念日" ],
46
- [ 6, 5, 4, 0, "みどりの日" ],
47
- [ 7, 5, 5, 0, "こどもの日" ],
48
- [ 8, 7, 0, 3, "海の日" ],
49
- [ 9, 8, 11, 0, "山の日" ],
50
- [10, 9, 0, 3, "敬老の日" ],
51
- [11, 9, 0, 4, "秋分の日" ],
52
- [12, 10, 0, 2, "体育の日" ],
53
- [13, 11, 3, 0, "文化の日" ],
54
- [14, 11, 23, 0, "勤労感謝の日"],
55
- [15, 12, 23, 0, "天皇誕生日" ],
56
- [90, 0, 0, 8, "国民の休日" ],
57
- [91, 0, 0, 9, "振替休日" ]
40
+ [ 0, 1, 1, 0, 1949, 9999, "元日" ],
41
+ [ 1, 1, 15, 0, 1949, 1999, "成人の日" ],
42
+ [ 2, 1, 0, 2, 2000, 9999, "成人の日" ],
43
+ [ 3, 2, 11, 0, 1967, 9999, "建国記念の日" ],
44
+ [ 4, 2, 23, 0, 2020, 9999, "天皇誕生日" ],
45
+ [ 5, 2, 24, 0, 1989, 1989, "昭和天皇の大喪の礼"],
46
+ [ 6, 3, 0, 4, 1949, 9999, "春分の日" ],
47
+ [ 7, 4, 10, 0, 1959, 1959, "明仁親王の結婚の儀"],
48
+ [ 8, 4, 29, 0, 1949, 1988, "天皇誕生日" ],
49
+ [ 9, 4, 29, 0, 1989, 2006, "みどりの日" ],
50
+ [10, 4, 29, 0, 2007, 9999, "昭和の日" ],
51
+ [11, 5, 1, 0, 2019, 2019, "天皇の即位の日" ],
52
+ [12, 5, 3, 0, 1949, 9999, "憲法記念日" ],
53
+ [13, 5, 4, 0, 2007, 9999, "みどりの日" ],
54
+ [14, 5, 5, 0, 1949, 9999, "こどもの日" ],
55
+ [15, 6, 9, 0, 1993, 1993, "徳仁親王の結婚の儀"],
56
+ [16, 7, 20, 0, 1996, 2002, "海の日" ],
57
+ [17, 7, 23, 0, 2020, 2020, "海の日" ],
58
+ [18, 7, 24, 0, 2020, 2020, "スポーツの日" ],
59
+ [19, 7, 0, 3, 2003, 2019, "海の日" ],
60
+ [20, 7, 0, 3, 2021, 9999, "海の日" ],
61
+ [21, 8, 10, 0, 2020, 2020, "山の日" ],
62
+ [22, 8, 11, 0, 2016, 2019, "山の日" ],
63
+ [23, 8, 11, 0, 2021, 9999, "山の日" ],
64
+ [24, 9, 15, 0, 1966, 2002, "敬老の日" ],
65
+ [25, 9, 0, 3, 2003, 9999, "敬老の日" ],
66
+ [26, 9, 0, 4, 1948, 9999, "秋分の日" ],
67
+ [27, 10, 10, 0, 1966, 1999, "体育の日" ],
68
+ [28, 10, 22, 0, 2019, 2019, "即位礼正殿の儀" ],
69
+ [29, 10, 0, 2, 2000, 2019, "体育の日" ],
70
+ [30, 10, 0, 2, 2021, 9999, "スポーツの日" ],
71
+ [31, 11, 3, 0, 1948, 9999, "文化の日" ],
72
+ [32, 11, 12, 0, 1990, 1990, "即位礼正殿の儀" ],
73
+ [33, 11, 23, 0, 1948, 9999, "勤労感謝の日" ],
74
+ [34, 12, 23, 0, 1989, 2018, "天皇誕生日" ],
75
+ [90, 0, 0, 8, 1973, 9999, "振替休日" ], # 1973-04-12 以降
76
+ [91, 0, 0, 9, 1986, 9999, "国民の休日" ]
58
77
  ]
59
78
  end
60
79
  end
@@ -1,3 +1,3 @@
1
1
  module MkCalJpl
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.1"
3
3
  end
data/mk_cal_jpl.gemspec CHANGED
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency "mk_apos"
31
31
  spec.add_dependency "mk_coord"
32
- spec.add_development_dependency "bundler", "~> 1.12"
32
+ #spec.add_development_dependency "bundler", "~> 1.12"
33
+ spec.add_development_dependency "bundler", ">= 2.2.10"
33
34
  spec.add_development_dependency "rake", "~> 10.0"
34
35
  spec.add_development_dependency "rspec", "~> 3.0"
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mk_cal_jpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - komasaru
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-11 00:00:00.000000000 Z
11
+ date: 2021-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mk_apos
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.12'
47
+ version: 2.2.10
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.12'
54
+ version: 2.2.10
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +113,7 @@ homepage: https://github.com/komasaru/mk_cal_jpl
113
113
  licenses:
114
114
  - MIT
115
115
  metadata: {}
116
- post_install_message:
116
+ post_install_message:
117
117
  rdoc_options: []
118
118
  require_paths:
119
119
  - lib
@@ -128,9 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  - !ruby/object:Gem::Version
129
129
  version: '0'
130
130
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.7.4
133
- signing_key:
131
+ rubygems_version: 3.2.9
132
+ signing_key:
134
133
  specification_version: 4
135
134
  summary: Calendar library including Japan's old-calendar, using JPL DE430.
136
135
  test_files: []