mk_cal_jpl 0.2.4 → 0.3.2

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: d8002fb51681b81cae77f03a8d624ef1d94e1074d2aed760f75729b89c7f97b2
4
- data.tar.gz: bf5ceca5c75e856c5c12de6a7e317252edd44a51296685f92d4ba50f08ffa78c
3
+ metadata.gz: b74745baec925d50fe502c3db8fefd5b3786a63fd945064cd93e961344b716fb
4
+ data.tar.gz: a0a2b50fd08e952b17ad8b4210cabc3c3bf57f1b91f9a52697e660fb3e3df060
5
5
  SHA512:
6
- metadata.gz: 0cc04f7e31ebba4f97d591b124f670f00bb422b321bb23642ace9d548f6c12e98b4cdca481f72848897745ce50849f867f8b6b4649c01711a26390a2a35322e9
7
- data.tar.gz: e33ca92673b6a13d0c25c093b60bf323d80c656dd30dcafdcbcc40cd7b8914ee0c59832c8a5a711ab0882fe38f5b1dd4fe7ebb7ae9dbbab9a2bd6cf2311059b7
6
+ metadata.gz: 7cf43e547defbe689daedfb2b9cc213de1e2ba4576fb071c9afef17d100d3abc7ef56409aab0a894010be9e6fc3afe268ee909be859d26b021d68c5b3d15c0a3
7
+ data.tar.gz: baba7690a994b197a2de06c647ee1060d8d339f4471431caac75c085726dcba6daaf26dd4820489e5e2b599bff5c908d8a5f505e3a364109edee6996e1ea1bc6
@@ -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)
@@ -35,8 +35,8 @@ 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
42
  Const::HOLIDAY.each do |id, month, day, kbn, year_s, year_e, name|
@@ -77,34 +77,17 @@ module MkCalJpl
77
77
  end
78
78
  end
79
79
 
80
- # 国民の休日計算
81
- # ( 「国民の祝日」で前後を挟まれた「国民の祝日」でない日 )
82
- # ( 年またぎは考慮していない(今のところ不要) )
83
- year_s_k = Const::HOLIDAY.select { |a| a[0] == 90 }[0][4]
84
- 0.upto(holiday_0.length - 2) do |i|
85
- m_0, d_0 = holiday_0[i ][0, 2]
86
- m_1, d_1 = holiday_0[i + 1][0, 2]
87
- jd_0 = gc2jd(year, m_0, d_0)
88
- jd_1 = gc2jd(year, m_1, d_1)
89
- if jd_0 + 2 == jd_1
90
- jd = jd_0 + 1
91
- m, d = jd2ymd(jd)[1, 2]
92
- yobi = Const::YOBI[Const::YOBI.index(holiday_0[i][4]) + 1]
93
- holiday_1 << [m, d, 90, jd, yobi]
94
- end
95
- end if year < year_s_k
96
-
97
80
  # 振替休日計算
98
81
  # ( 「国民の祝日」が日曜日に当たるときは、
99
82
  # その日後においてその日に最も近い「国民の祝日」でない日 )
100
- year_s_f = Const::HOLIDAY.select { |a| a[0] == 91 }[0][4]
83
+ year_s_f = Const::HOLIDAY.select { |a| a[0] == 90 }[0][4]
101
84
  0.upto(holiday_0.length - 1) do |i|
102
85
  if holiday_0[i][4] == "日"
103
86
  next_jd = holiday_0[i][3] + 1
104
87
  next_yobi = Const::YOBI[Const::YOBI.index(holiday_0[i][4]) + 1]
105
88
  if i == holiday_0.length - 1
106
89
  wk_ymd = jd2ymd(next_jd)
107
- 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]
108
91
  else
109
92
  flg_furikae = 0
110
93
  plus_day = 1
@@ -118,15 +101,32 @@ module MkCalJpl
118
101
  else
119
102
  flg_furikae = 1
120
103
  wk_ymd = jd2ymd(next_jd)
121
- 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]
122
105
  end
123
106
  end
124
107
  end
125
108
  end
126
- holiday_2 << wk_ary
109
+ holiday_1 << wk_ary
110
+ end
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
127
  end
128
- end if year < year_s_f
129
- return (holiday_0 + holiday_1 + holiday_2).sort
128
+ end if year >= year_s_k
129
+ return merge_sort(holiday_0, holiday_1, holiday_2)
130
130
  end
131
131
 
132
132
  #=========================================================================
@@ -156,12 +156,16 @@ module MkCalJpl
156
156
  lsun_today = compute_lambda(jd)
157
157
  # 計算対象日の翌日の太陽の黄経
158
158
  lsun_tomorrow = compute_lambda(jd + 1)
159
+ # ====[ 190919:DEL ]===>
159
160
  # 計算対象日の5日前の太陽の黄経(社日計算用)
160
- lsun_before_5 = compute_lambda(jd - 5)
161
+ #lsun_before_5 = compute_lambda(jd - 5)
162
+ # <===[ 190919:DEL ]====
161
163
  # 計算対象日の4日前の太陽の黄経(社日計算用)
162
164
  lsun_before_4 = compute_lambda(jd - 4)
165
+ # ====[ 190919:DEL ]===>
163
166
  # 計算対象日の5日後の太陽の黄経(社日計算用)
164
- lsun_after_5 = compute_lambda(jd + 5)
167
+ #lsun_after_5 = compute_lambda(jd + 5)
168
+ # <===[ 190919:DEL ]====
165
169
  # 計算対象日の6日後の太陽の黄経(社日計算用)
166
170
  lsun_after_6 = compute_lambda(jd + 6)
167
171
  # 太陽の黄経の整数部分( 土用, 入梅, 半夏生 計算用 )
@@ -205,14 +209,19 @@ module MkCalJpl
205
209
  if compute_sekki_24(jd + 5) == "春分"
206
210
  # 春分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
207
211
  # 0度(360度)以上なら、春分点が午前と判断
208
- zassetsu << 4 if (lsun_after_5 + lsun_after_6 + 360) / 2.0 >= 360
209
- end
210
- # [ 5日前 ]
211
- if compute_sekki_24(jd - 5) == "春分"
212
- # 春分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
213
- # 0度(360度)未満なら、春分点が午後と判断
214
- 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 ]===~
215
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 ]===~
216
225
  end
217
226
  # 5:土用入(春) ( 黄経(太陽) = 27度 )
218
227
  unless lsun_today0 == lsun_tomorrow0
@@ -270,14 +279,19 @@ module MkCalJpl
270
279
  if compute_sekki_24(jd + 5) == "秋分"
271
280
  # 秋分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
272
281
  # 180度以上なら、秋分点が午前と判断
273
- zassetsu << 15 if (lsun_after_5 + lsun_after_6) / 2.0 >= 180
274
- end
275
- # [ 5日前 ]
276
- if compute_sekki_24(jd - 5) == "秋分"
277
- # 秋分の日の黄経(太陽)と翌日の黄経(太陽)の中間点が
278
- # 180度未満なら、秋分点が午後と判断
279
- 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 ]====
280
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 ]====
281
295
  end
282
296
  # 16:土用入(秋) ( 黄経(太陽) = 207度 )
283
297
  unless lsun_today0 == lsun_tomorrow0
@@ -661,6 +675,27 @@ module MkCalJpl
661
675
  lmd = a.moon[1][0] * 180.0 / Math::PI
662
676
  return lmd
663
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
664
699
  end
665
700
  end
666
701
 
@@ -41,36 +41,39 @@ module MkCalJpl
41
41
  [ 1, 1, 15, 0, 1949, 1999, "成人の日" ],
42
42
  [ 2, 1, 0, 2, 2000, 9999, "成人の日" ],
43
43
  [ 3, 2, 11, 0, 1967, 9999, "建国記念の日" ],
44
- [ 4, 3, 0, 4, 1949, 9999, "春分の日" ],
45
- [ 5, 4, 29, 0, 1949, 1988, "天皇誕生日" ],
46
- [ 6, 4, 29, 0, 1989, 2006, "みどりの日" ],
47
- [ 7, 4, 29, 0, 2007, 9999, "昭和の日" ],
48
- [ 8, 5, 3, 0, 1949, 9999, "憲法記念日" ],
49
- [ 9, 5, 4, 0, 2007, 9999, "みどりの日" ],
50
- [10, 5, 5, 0, 1949, 9999, "こどもの日" ],
51
- [11, 7, 20, 0, 1996, 2002, "海の日" ],
52
- [12, 7, 0, 3, 2003, 2019, "海の日" ],
53
- [13, 7, 23, 0, 2020, 2020, "海の日" ],
54
- [14, 7, 0, 3, 2021, 9999, "海の日" ],
55
- [15, 8, 11, 0, 2016, 2019, "山の日" ],
56
- [16, 8, 10, 0, 2020, 2020, "山の日" ],
57
- [17, 8, 11, 0, 2021, 9999, "山の日" ],
58
- [18, 9, 15, 0, 1966, 2002, "敬老の日" ],
59
- [19, 9, 0, 3, 2003, 9999, "敬老の日" ],
60
- [20, 9, 0, 4, 1948, 9999, "秋分の日" ],
61
- [21, 10, 10, 0, 1966, 1999, "体育の日" ],
62
- [22, 10, 0, 2, 2000, 2019, "体育の日" ],
63
- [23, 7, 24, 0, 2020, 2020, "スポーツの日" ],
64
- [24, 10, 0, 2, 2021, 9999, "スポーツの日" ],
65
- [25, 11, 3, 0, 1948, 9999, "文化の日" ],
66
- [26, 11, 23, 0, 1948, 9999, "勤労感謝の日" ],
67
- [27, 12, 23, 0, 1989, 9999, "天皇誕生日" ],
68
- [28, 4, 10, 0, 1959, 1959, "明仁親王の結婚の儀"],
69
- [29, 2, 24, 0, 1989, 1989, "昭和天皇の大喪の礼"],
70
- [30, 11, 12, 0, 1990, 1990, "即位礼正殿の儀" ],
71
- [31, 6, 9, 0, 1993, 1993, "徳仁親王の結婚の儀"],
72
- [90, 0, 0, 8, 1986, 9999, "国民の休日" ],
73
- [91, 0, 0, 9, 1973, 9999, "振替休日" ] # 1973-04-12 以降
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, "国民の休日" ]
74
77
  ]
75
78
  end
76
79
  end
@@ -1,3 +1,3 @@
1
1
  module MkCalJpl
2
- VERSION = "0.2.4"
2
+ VERSION = "0.3.2"
3
3
  end
data/mk_cal_jpl.gemspec CHANGED
@@ -29,7 +29,9 @@ 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"
33
- spec.add_development_dependency "rake", "~> 10.0"
32
+ #spec.add_development_dependency "bundler", "~> 1.12"
33
+ spec.add_development_dependency "bundler", ">= 2.2.10"
34
+ #spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rake", ">= 12.3.3"
34
36
  spec.add_development_dependency "rspec", "~> 3.0"
35
37
  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.4
4
+ version: 0.3.2
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-06-13 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,30 +42,30 @@ 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
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  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.7
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: []