mk_cal_jpl 0.2.4 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8002fb51681b81cae77f03a8d624ef1d94e1074d2aed760f75729b89c7f97b2
4
- data.tar.gz: bf5ceca5c75e856c5c12de6a7e317252edd44a51296685f92d4ba50f08ffa78c
3
+ metadata.gz: 1e30bc3dde183fcd292276e2c5bc490e10e5e3fb1924d13b62b9ef151e6ffdbd
4
+ data.tar.gz: 2f86b74f9f21ded36a21d22181bf1b96370bfe712d0abea466ec30fdffc242c4
5
5
  SHA512:
6
- metadata.gz: 0cc04f7e31ebba4f97d591b124f670f00bb422b321bb23642ace9d548f6c12e98b4cdca481f72848897745ce50849f867f8b6b4649c01711a26390a2a35322e9
7
- data.tar.gz: e33ca92673b6a13d0c25c093b60bf323d80c656dd30dcafdcbcc40cd7b8914ee0c59832c8a5a711ab0882fe38f5b1dd4fe7ebb7ae9dbbab9a2bd6cf2311059b7
6
+ metadata.gz: c6e5f29ad7be9e145c382e5d8f4108f7bc93e72fee5a58a1fdade8ae328838b876254956e1994e12f664157e5bfe40b6b97758816d7806d5058a1e98a2cc11f6
7
+ data.tar.gz: 706f98e2cdb465eba1ce947af70ea3cd9557f02a40e9cbe1a8d1ec9c6b6c891d8086ecf63e62f92c8e36259e6311a065464ba62a3f1d25e838f6e7ab3ff58f79
@@ -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
  #=========================================================================
@@ -661,6 +661,27 @@ module MkCalJpl
661
661
  lmd = a.moon[1][0] * 180.0 / Math::PI
662
662
  return lmd
663
663
  end
664
+
665
+ private
666
+
667
+ # マージ&ソート
668
+ # * さらに、「振替休日」と「国民の休日」がダブる場合は、
669
+ # 「振替休日」を優先
670
+ def merge_sort(hol_0, hol_1, hol_2)
671
+ data = Array.new
672
+ data_src = (hol_0 + hol_1 + hol_2).sort
673
+ data_src.each_with_index do |d, i|
674
+ if i == 0
675
+ data << d
676
+ next
677
+ end
678
+ if data_src[i - 1][0..2] == d[0..2]
679
+ next if data_src[i - 1][3] == 90 && d[3] == 91
680
+ end
681
+ data << d
682
+ end
683
+ return data
684
+ end
664
685
  end
665
686
  end
666
687
 
@@ -69,8 +69,8 @@ module MkCalJpl
69
69
  [29, 2, 24, 0, 1989, 1989, "昭和天皇の大喪の礼"],
70
70
  [30, 11, 12, 0, 1990, 1990, "即位礼正殿の儀" ],
71
71
  [31, 6, 9, 0, 1993, 1993, "徳仁親王の結婚の儀"],
72
- [90, 0, 0, 8, 1986, 9999, "国民の休日" ],
73
- [91, 0, 0, 9, 1973, 9999, "振替休日" ] # 1973-04-12 以降
72
+ [90, 0, 0, 8, 1973, 9999, "振替休日" ], # 1973-04-12 以降
73
+ [91, 0, 0, 9, 1986, 9999, "国民の休日" ]
74
74
  ]
75
75
  end
76
76
  end
@@ -1,3 +1,3 @@
1
1
  module MkCalJpl
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  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.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - komasaru
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2018-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mk_apos