zakuro 0.7.0 → 0.7.2
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/README.md +37 -10
- data/VERSION +1 -1
- data/doc/dropped_date.md +93 -0
- data/doc/error.md +45 -0
- data/lib/zakuro/calculation/base/day.rb +52 -0
- data/lib/zakuro/calculation/base/operated_year.rb +3 -3
- data/lib/zakuro/calculation/base/year.rb +4 -4
- data/lib/zakuro/calculation/cycle/abstract_remainder.rb +5 -3
- data/lib/zakuro/calculation/monthly/initialized_month.rb +1 -1
- data/lib/zakuro/calculation/monthly/month.rb +3 -3
- data/lib/zakuro/calculation/monthly/operated_month.rb +1 -1
- data/lib/zakuro/calculation/option/dropped_date/abstract_parameter.rb +44 -0
- data/lib/zakuro/calculation/option/dropped_date/location.rb +135 -0
- data/lib/zakuro/calculation/range/abstract_full_range.rb +10 -8
- data/lib/zakuro/calculation/range/abstract_operation_range.rb +2 -2
- data/lib/zakuro/calculation/range/dated_full_range.rb +1 -1
- data/lib/zakuro/calculation/range/dated_operation_range.rb +1 -1
- data/lib/zakuro/calculation/range/medieval_annual_range.rb +2 -2
- data/lib/zakuro/calculation/range/named_full_range.rb +1 -1
- data/lib/zakuro/calculation/range/named_operation_range.rb +1 -1
- data/lib/zakuro/calculation/range/operated_solar_terms.rb +9 -9
- data/lib/zakuro/calculation/range/transfer/year_boundary.rb +6 -6
- data/lib/zakuro/calculation/stella/solar/abstract_location.rb +2 -0
- data/lib/zakuro/calculation/summary/internal/day.rb +40 -0
- data/lib/zakuro/calculation/summary/internal/month.rb +15 -7
- data/lib/zakuro/calculation/summary/internal/option.rb +85 -0
- data/lib/zakuro/calculation/summary/japan/range.rb +15 -9
- data/lib/zakuro/calculation/summary/japan/single.rb +6 -6
- data/lib/zakuro/calculation/summary/japan/specifier/single_day.rb +10 -5
- data/lib/zakuro/calculation/summary/western/range.rb +5 -5
- data/lib/zakuro/calculation/summary/western/single.rb +9 -9
- data/lib/zakuro/calculation/summary/western/specifier/multiple_day.rb +15 -10
- data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +12 -7
- data/lib/zakuro/calculation/type/optional.rb +46 -0
- data/lib/zakuro/condition.rb +60 -20
- data/lib/zakuro/context/context.rb +44 -0
- data/lib/zakuro/context/option.rb +117 -0
- data/lib/zakuro/context/version_class_resolver.rb +110 -0
- data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +4 -0
- data/lib/zakuro/era/japan/gengou/resource/parser.rb +2 -0
- data/lib/zakuro/era/japan/gengou/resource/type.rb +6 -0
- data/lib/zakuro/era/western/calendar.rb +4 -0
- data/lib/zakuro/exception/case/pattern.rb +39 -3
- data/lib/zakuro/exception/exception.rb +3 -3
- data/lib/zakuro/exception/zakuro_error.rb +19 -1
- data/lib/zakuro/gateway/range.rb +2 -2
- data/lib/zakuro/gateway/single.rb +1 -1
- data/lib/zakuro/merchant.rb +78 -8
- data/lib/zakuro/operation/month/parser.rb +2 -0
- data/lib/zakuro/output/response.rb +24 -57
- data/lib/zakuro/result/data/option/abstract_option.rb +37 -0
- data/lib/zakuro/result/data/option/dropped_date/calculation.rb +47 -0
- data/lib/zakuro/result/data/option/dropped_date/option.rb +47 -0
- data/lib/zakuro/result/data/option/dropped_date/solar_term.rb +48 -0
- data/lib/zakuro/result/data/single_day.rb +9 -1
- data/lib/zakuro/result/operation/{operation.rb → bundle.rb} +0 -0
- data/lib/zakuro/result/result.rb +1 -1
- data/lib/zakuro/tools/stringifier.rb +26 -3
- data/lib/zakuro/version/daien/cycle/remainder.rb +2 -2
- data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +31 -0
- data/lib/zakuro/version/daien/range/annual_range.rb +1 -1
- data/lib/zakuro/version/daien/stella/lunar/adjustment.rb +2 -0
- data/lib/zakuro/version/daien/stella/lunar/value.rb +2 -0
- data/lib/zakuro/version/genka/cycle/remainder.rb +2 -2
- data/lib/zakuro/version/genka/option/dropped_date/parameter.rb +31 -0
- data/lib/zakuro/version/genka/range/annual_range.rb +1 -1
- data/lib/zakuro/version/gihou/cycle/remainder.rb +2 -2
- data/lib/zakuro/version/gihou/option/dropped_date/parameter.rb +31 -0
- data/lib/zakuro/version/gihou/range/annual_range.rb +1 -1
- data/lib/zakuro/version/gihou/stella/lunar/adjustment.rb +2 -0
- data/lib/zakuro/version/gihou/stella/lunar/value.rb +2 -0
- data/lib/zakuro/version/senmyou/const/remainder.rb +5 -0
- data/lib/zakuro/version/senmyou/cycle/remainder.rb +37 -2
- data/lib/zakuro/version/senmyou/option/dropped_date/parameter.rb +33 -0
- data/lib/zakuro/version/senmyou/range/annual_range.rb +1 -1
- data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +2 -0
- data/lib/zakuro/version/senmyou/stella/lunar/value.rb +2 -0
- metadata +26 -9
- data/lib/zakuro/version/context.rb +0 -44
- data/lib/zakuro/version/version_class_resolver.rb +0 -74
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '../../
|
3
|
+
require_relative '../../context/context'
|
4
4
|
|
5
5
|
require_relative '../../era/western/calendar'
|
6
6
|
require_relative '../../output/logger'
|
@@ -35,7 +35,7 @@ module Zakuro
|
|
35
35
|
# * この再計算が必要になるのは、元号が切り替わる年のみである
|
36
36
|
#
|
37
37
|
class AbstractFullRange
|
38
|
-
# @return [Context] 暦コンテキスト
|
38
|
+
# @return [Context::Context] 暦コンテキスト
|
39
39
|
attr_reader :context
|
40
40
|
# @return [Western::Calendar] 開始日
|
41
41
|
attr_reader :start_date
|
@@ -50,7 +50,7 @@ module Zakuro
|
|
50
50
|
#
|
51
51
|
# 初期化
|
52
52
|
#
|
53
|
-
# @param [Context] context 暦コンテキスト
|
53
|
+
# @param [Context::Context] context 暦コンテキスト
|
54
54
|
# @param [Gengou::AbstractScroll] scroll 元号スクロール
|
55
55
|
# @param [Western::Calendar] start_date 開始日
|
56
56
|
# @param [Western::Calendar] last_date 終了日
|
@@ -61,7 +61,6 @@ module Zakuro
|
|
61
61
|
@last_date = last_date
|
62
62
|
return if invalid?
|
63
63
|
|
64
|
-
# TODO: 現時点では使用していない。特定の暦を指定できるようになった状態で使用する
|
65
64
|
@context = context
|
66
65
|
@scroll = scroll
|
67
66
|
end
|
@@ -106,17 +105,20 @@ module Zakuro
|
|
106
105
|
start_year = @scroll.western_start_year
|
107
106
|
last_year = @scroll.western_last_year
|
108
107
|
|
108
|
+
# TODO: context にデフォルト暦名が設定されている場合は使用しない
|
109
109
|
versions = Version.get(start_year: start_year, last_year: last_year)
|
110
110
|
|
111
111
|
versions.each_with_index do |version, index|
|
112
|
-
|
112
|
+
specified_context = Context::Context.new(
|
113
|
+
version: version.name, options: context.option.hash
|
114
|
+
)
|
113
115
|
start_year = version.start_year
|
114
116
|
last_year = version.last_year
|
115
117
|
# 最後の暦だけ1年足す(次の元号の開始年まで計算するケースあり)
|
116
118
|
last_year += 1 if (index + 1) == versions.size
|
117
119
|
|
118
120
|
years = boundary_resolved_ranges(
|
119
|
-
context:
|
121
|
+
context: specified_context, start_year: start_year, last_year: last_year
|
120
122
|
)
|
121
123
|
result.concat(years)
|
122
124
|
end
|
@@ -127,7 +129,7 @@ module Zakuro
|
|
127
129
|
#
|
128
130
|
# 年境界解決済みの範囲
|
129
131
|
#
|
130
|
-
# @param [Context] context 暦コンテキスト
|
132
|
+
# @param [Context::Context] context 暦コンテキスト
|
131
133
|
# @param [Integer] start_year 開始西暦年
|
132
134
|
# @param [Integer] last_year 終了西暦年
|
133
135
|
#
|
@@ -146,7 +148,7 @@ module Zakuro
|
|
146
148
|
#
|
147
149
|
# 完全範囲内の年データを取得する
|
148
150
|
#
|
149
|
-
# @param [Context] context 暦コンテキスト
|
151
|
+
# @param [Context::Context] context 暦コンテキスト
|
150
152
|
# @param [Integer] start_year 開始西暦年
|
151
153
|
# @param [Integer] last_year 終了西暦年
|
152
154
|
#
|
@@ -21,13 +21,13 @@ module Zakuro
|
|
21
21
|
attr_reader :years
|
22
22
|
# @return [OperatedSolarTerms] 運用時二十四節気
|
23
23
|
attr_reader :operated_solar_terms
|
24
|
-
# @return [Context] 暦コンテキスト
|
24
|
+
# @return [Context::Context] 暦コンテキスト
|
25
25
|
attr_reader :context
|
26
26
|
|
27
27
|
#
|
28
28
|
# 初期化
|
29
29
|
#
|
30
|
-
# @param [Context] context 暦コンテキスト
|
30
|
+
# @param [Context::Context] context 暦コンテキスト
|
31
31
|
# @param [Gengou::AbstractScroll] scroll 元号スクロール
|
32
32
|
# @param [Array<Year>] years 年データ(完全範囲)
|
33
33
|
#
|
@@ -29,7 +29,7 @@ module Zakuro
|
|
29
29
|
# * 対象年に対して、前年11月-当年11月までを出力する
|
30
30
|
# * 対象年(西暦)と計算年(元号x年)の紐付けは行わない
|
31
31
|
#
|
32
|
-
# @param [Context] context 暦コンテキスト
|
32
|
+
# @param [Context::Context] context 暦コンテキスト
|
33
33
|
# @param [Monthly::AbstractLunarPhase] lunar_phase 月の位相
|
34
34
|
# @param [Solar::AbstractAverage] solar_average 定気(太陽軌道平均)
|
35
35
|
#
|
@@ -51,7 +51,7 @@ module Zakuro
|
|
51
51
|
#
|
52
52
|
# 1年データを取得する
|
53
53
|
#
|
54
|
-
# @param [Context] context 暦コンテキスト
|
54
|
+
# @param [Context::Context] context 暦コンテキスト
|
55
55
|
# @param [Monthly::LunarPhase] lunar_phase 月の位相
|
56
56
|
#
|
57
57
|
# @return [Array<Month>] 1年データ
|
@@ -21,13 +21,13 @@ module Zakuro
|
|
21
21
|
# * 移動先の二十四節気:移動元からの二十四節気(追加対象)
|
22
22
|
#
|
23
23
|
attr_reader :directions
|
24
|
-
# @return [Context] 暦コンテキスト
|
24
|
+
# @return [Context::Context] 暦コンテキスト
|
25
25
|
attr_reader :context
|
26
26
|
|
27
27
|
#
|
28
28
|
# 初期化
|
29
29
|
#
|
30
|
-
# @param [Context] context 暦コンテキスト
|
30
|
+
# @param [Context::Context] context 暦コンテキスト
|
31
31
|
# @param [Array<Year>] years 完全範囲(年データ)
|
32
32
|
#
|
33
33
|
def initialize(context:, years: [])
|
@@ -73,7 +73,7 @@ module Zakuro
|
|
73
73
|
#
|
74
74
|
# 年内の全ての月の移動方向を作成する
|
75
75
|
#
|
76
|
-
# @param [Context] context 暦コンテキスト
|
76
|
+
# @param [Context::Context] context 暦コンテキスト
|
77
77
|
# @param [Hash<String, SolarTerm>] directions 二十四節気の移動元/移動先(西暦日 -> 対応する二十四節気)
|
78
78
|
# @param [Array<Month>] months 年内の全ての月
|
79
79
|
#
|
@@ -98,7 +98,7 @@ module Zakuro
|
|
98
98
|
#
|
99
99
|
# 月毎の移動方向を作成する
|
100
100
|
#
|
101
|
-
# @param [Context] context 暦コンテキスト
|
101
|
+
# @param [Context::Context] context 暦コンテキスト
|
102
102
|
# @param [Month] 月
|
103
103
|
# @param [Hash<String, SolarTerm>] directions 二十四節気の移動元/移動先(西暦日 -> 対応する二十四節気)
|
104
104
|
# @param [Operation::SolarTerm::Diretion] 二十四節気(移動)
|
@@ -119,7 +119,7 @@ module Zakuro
|
|
119
119
|
#
|
120
120
|
# 移動先に有効な二十四節気(差し替える二十四節気)を指定する
|
121
121
|
#
|
122
|
-
# @param [Context] context 暦コンテキスト
|
122
|
+
# @param [Context::Context] context 暦コンテキスト
|
123
123
|
# @param [SolarTerm] solar_term 二十四節気(計算値)
|
124
124
|
# @param [Hash<String, SolarTerm>] directions 二十四節気の移動元/移動先(西暦日 -> 対応する二十四節気)
|
125
125
|
# @param [Operation::SolarTerm::Direction] source 二十四節気(移動)
|
@@ -141,7 +141,7 @@ module Zakuro
|
|
141
141
|
#
|
142
142
|
# 移動先に有効な二十四節気(差し替える二十四節気)を生成する
|
143
143
|
#
|
144
|
-
# @param [Context] context 暦コンテキスト
|
144
|
+
# @param [Context::Context] context 暦コンテキスト
|
145
145
|
# @param [SolarTerm] solar_term 二十四節気(計算値)
|
146
146
|
# @param [Operation::SolarTerm::Direction] source 二十四節気(移動)
|
147
147
|
#
|
@@ -165,7 +165,7 @@ module Zakuro
|
|
165
165
|
#
|
166
166
|
# 移動元に無効な二十四節気(連番のみ指定)を指定する
|
167
167
|
#
|
168
|
-
# @param [Context] context 暦コンテキスト
|
168
|
+
# @param [Context::Context] context 暦コンテキスト
|
169
169
|
# @param [Hash<String, SolarTerm>] directions 二十四節気の移動元/移動先(西暦日 -> 対応する二十四節気)
|
170
170
|
# @param [Operation::SolarTerm::Destination] destination 二十四節気(移動先)
|
171
171
|
#
|
@@ -186,14 +186,14 @@ module Zakuro
|
|
186
186
|
#
|
187
187
|
# @param [Western::Calendar] western_date 西暦日
|
188
188
|
#
|
189
|
-
# @return [Context] 暦コンテキスト
|
189
|
+
# @return [Context::Context] 暦コンテキスト
|
190
190
|
#
|
191
191
|
def current_context(western_date: Western::Calendar.new)
|
192
192
|
@years.each do |year|
|
193
193
|
return year.context if western_date >= year.new_year_date
|
194
194
|
end
|
195
195
|
|
196
|
-
Context.new
|
196
|
+
Context::Context.new
|
197
197
|
end
|
198
198
|
|
199
199
|
#
|
@@ -19,7 +19,7 @@ module Zakuro
|
|
19
19
|
#
|
20
20
|
# 年間範囲内の年データの開始月を変更する
|
21
21
|
#
|
22
|
-
# @param [Context] context 暦コンテキスト
|
22
|
+
# @param [Context::Context] context 暦コンテキスト
|
23
23
|
# @param [Array<Base::Year>] annual_ranges 年データ(冬至基準)
|
24
24
|
#
|
25
25
|
# @return [Array<Base::Year>] 年データ(元旦基準)
|
@@ -32,7 +32,7 @@ module Zakuro
|
|
32
32
|
#
|
33
33
|
# 年間範囲内の年データの開始月を変更する
|
34
34
|
#
|
35
|
-
# @param [Context] context 暦コンテキスト
|
35
|
+
# @param [Context::Context] context 暦コンテキスト
|
36
36
|
# @param [Array<Base::Year>] annual_ranges 年データ(冬至基準)
|
37
37
|
#
|
38
38
|
# @return [Array<Base::Year>] 年データ(元旦基準)
|
@@ -54,7 +54,7 @@ module Zakuro
|
|
54
54
|
#
|
55
55
|
# 年間範囲を昨年/今年で分類する
|
56
56
|
#
|
57
|
-
# @param [Context] context 暦コンテキスト
|
57
|
+
# @param [Context::Context] context 暦コンテキスト
|
58
58
|
# @param [Array<Base::Year>] annual_range 1年データ
|
59
59
|
#
|
60
60
|
def self.categorize(context:, annual_ranges:)
|
@@ -67,7 +67,7 @@ module Zakuro
|
|
67
67
|
#
|
68
68
|
# 各月を昨年/今年で分類する
|
69
69
|
#
|
70
|
-
# @param [Context] context 暦コンテキスト
|
70
|
+
# @param [Context::Context] context 暦コンテキスト
|
71
71
|
# @param [Array<Month>] annual_range 1年データ
|
72
72
|
#
|
73
73
|
def self.categorize_year(context:, annual_range:)
|
@@ -88,7 +88,7 @@ module Zakuro
|
|
88
88
|
#
|
89
89
|
# 年データの開始月を変更する
|
90
90
|
#
|
91
|
-
# @param [Context] context 暦コンテキスト
|
91
|
+
# @param [Context::Context] context 暦コンテキスト
|
92
92
|
# @param [Array<Base::Year>] annual_ranges 年データ(冬至基準)
|
93
93
|
# @param [Integer] index 対象年の要素番号
|
94
94
|
#
|
@@ -108,7 +108,7 @@ module Zakuro
|
|
108
108
|
#
|
109
109
|
# 当年データを生成する
|
110
110
|
#
|
111
|
-
# @param [Context] context 暦コンテキスト
|
111
|
+
# @param [Context::Context] context 暦コンテキスト
|
112
112
|
# @param [Array<Month>] annual_range 1年データ
|
113
113
|
#
|
114
114
|
# @return [Base::Year] 当年月ありの対象年
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../calculation/base/day'
|
4
|
+
require_relative '../../../era/western/calendar'
|
5
|
+
|
6
|
+
# :nodoc:
|
7
|
+
module Zakuro
|
8
|
+
# :nodoc:
|
9
|
+
module Calculation
|
10
|
+
# :nodoc:
|
11
|
+
module Summary
|
12
|
+
#
|
13
|
+
# Day 特定日
|
14
|
+
#
|
15
|
+
module Day
|
16
|
+
#
|
17
|
+
# 日を取得する
|
18
|
+
#
|
19
|
+
# @param [Month] month 月
|
20
|
+
# @param [Western::Calendar] date 現在西暦日
|
21
|
+
#
|
22
|
+
# @return [Calculation::Base::Day] 特定日
|
23
|
+
#
|
24
|
+
def self.get(month:, date: Western::Calendar.new)
|
25
|
+
first_date = month.western_date
|
26
|
+
days = date - first_date
|
27
|
+
remainder = month.remainder
|
28
|
+
remainder = remainder.add(
|
29
|
+
# 常に参照元のRemainderクラスで生成する
|
30
|
+
remainder.class.new(day: days, minute: 0, second: 0)
|
31
|
+
)
|
32
|
+
|
33
|
+
Calculation::Base::Day.new(
|
34
|
+
number: days + 1, western_date: date, remainder: remainder
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
require_relative '../../../output/response'
|
4
4
|
|
5
|
+
require_relative './day'
|
6
|
+
require_relative './option'
|
7
|
+
|
5
8
|
# :nodoc:
|
6
9
|
module Zakuro
|
7
10
|
# :nodoc:
|
@@ -12,6 +15,8 @@ module Zakuro
|
|
12
15
|
# Month 特定月
|
13
16
|
#
|
14
17
|
class Month
|
18
|
+
# @return [Context::Context] 暦コンテキスト
|
19
|
+
attr_reader :context
|
15
20
|
# @return [Western::Calendar] 西暦開始日
|
16
21
|
attr_reader :start_date
|
17
22
|
# @return [Western::Calendar] 西暦終了日
|
@@ -24,12 +29,14 @@ module Zakuro
|
|
24
29
|
#
|
25
30
|
# 初期化
|
26
31
|
#
|
32
|
+
# @param [Context::Context] context 暦コンテキスト
|
27
33
|
# @param [Western::Calendar] start_date 西暦開始日
|
28
34
|
# @param [Western::Calendar] last_date 西暦終了日
|
29
35
|
# @param [Base::Year] year 年
|
30
36
|
# @param [Monthly::Month] month 月
|
31
37
|
#
|
32
|
-
def initialize(start_date:, last_date:, year:, month:)
|
38
|
+
def initialize(context:, start_date:, last_date:, year:, month:)
|
39
|
+
@context = context
|
33
40
|
@start_date = start_date
|
34
41
|
@last_date = last_date
|
35
42
|
@year = year
|
@@ -50,14 +57,15 @@ module Zakuro
|
|
50
57
|
|
51
58
|
next unless include?(date: current_date)
|
52
59
|
|
53
|
-
day =
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
60
|
+
day = Day.get(month: @month, date: current_date)
|
61
|
+
|
62
|
+
options = Option.create(month: @month, day: day)
|
63
|
+
|
64
|
+
single_day = Output::Response::SingleDay.create(
|
65
|
+
year: @year, month: @month, day: day, options: options
|
58
66
|
)
|
59
67
|
|
60
|
-
result.push(
|
68
|
+
result.push(single_day)
|
61
69
|
end
|
62
70
|
|
63
71
|
result
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../context/option'
|
4
|
+
require_relative '../../../result/data/option/dropped_date/option'
|
5
|
+
require_relative '../../../result/data/solar_term'
|
6
|
+
|
7
|
+
require_relative '../../option/dropped_date/location'
|
8
|
+
|
9
|
+
# :nodoc:
|
10
|
+
module Zakuro
|
11
|
+
# :nodoc:
|
12
|
+
module Calculation
|
13
|
+
# :nodoc:
|
14
|
+
module Summary
|
15
|
+
#
|
16
|
+
# Option オプション
|
17
|
+
#
|
18
|
+
module Option
|
19
|
+
#
|
20
|
+
# 初期化
|
21
|
+
#
|
22
|
+
# @param [Calculation::Monthly::Month] month 月情報(各暦のデータ型)
|
23
|
+
# @param [Calculation::Base::Day] day 日情報
|
24
|
+
#
|
25
|
+
# @return [Hash<String, Result::Data::Option::AbstractOption>] オプション結果
|
26
|
+
#
|
27
|
+
def self.create(month:, day:)
|
28
|
+
# TODO: test
|
29
|
+
options = {}
|
30
|
+
context = month.context
|
31
|
+
|
32
|
+
if context.option.dropped_date?
|
33
|
+
remainder = day.remainder
|
34
|
+
solar_terms = month.solar_terms
|
35
|
+
option = dropped_date(context: context, remainder: remainder, solar_terms: solar_terms)
|
36
|
+
options[Context::Option::DROPPED_DATE_KEY] = option
|
37
|
+
end
|
38
|
+
|
39
|
+
options
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# 没日を求める
|
44
|
+
#
|
45
|
+
# @param [Context::Context] context 暦コンテキスト
|
46
|
+
# @param [Cycle::AbstractRemainder] remainder 当日和暦日
|
47
|
+
# @param [Array<Cycle::AbstractSolarTerm>] solar_terms 二十四節気
|
48
|
+
#
|
49
|
+
# @return [Result::Data::Option::DroppedDate::Option] 没日
|
50
|
+
#
|
51
|
+
def self.dropped_date(context:, remainder:, solar_terms:)
|
52
|
+
# TODO: refactor
|
53
|
+
option = Result::Data::Option::DroppedDate::Option.new(
|
54
|
+
matched: false,
|
55
|
+
calculation: Result::Data::Option::DroppedDate::Calculation.new
|
56
|
+
)
|
57
|
+
|
58
|
+
return option if remainder.invalid?
|
59
|
+
|
60
|
+
location = Calculation::Option::DroppedDate::Location.new(
|
61
|
+
context: context, solar_terms: solar_terms
|
62
|
+
)
|
63
|
+
|
64
|
+
return option unless location.exist?
|
65
|
+
|
66
|
+
dropped_date = location.get
|
67
|
+
|
68
|
+
return option unless remainder.day == dropped_date.day
|
69
|
+
|
70
|
+
solar_term = location.solar_term
|
71
|
+
Result::Data::Option::DroppedDate::Option.new(
|
72
|
+
matched: true,
|
73
|
+
calculation: Result::Data::Option::DroppedDate::Calculation.new(
|
74
|
+
remainder: dropped_date.format,
|
75
|
+
solar_term: Result::Data::SolarTerm.new(
|
76
|
+
index: solar_term.index,
|
77
|
+
remainder: solar_term.remainder.format
|
78
|
+
)
|
79
|
+
)
|
80
|
+
)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -25,7 +25,7 @@ module Zakuro
|
|
25
25
|
#
|
26
26
|
# 生成する
|
27
27
|
#
|
28
|
-
# @param [Context] context 暦コンテキスト
|
28
|
+
# @param [Context::Context] context 暦コンテキスト
|
29
29
|
# @param [Japan::Calendar] start_date 和暦開始日
|
30
30
|
# @param [Japan::Calendar] last_date 和暦終了日
|
31
31
|
#
|
@@ -40,10 +40,15 @@ module Zakuro
|
|
40
40
|
context: context, years: years, start_date: start_date, last_date: last_date
|
41
41
|
)
|
42
42
|
|
43
|
-
japan_start_date = Specifier::SingleDay.get(
|
44
|
-
|
43
|
+
japan_start_date = Specifier::SingleDay.get(
|
44
|
+
years: operated_years, date: start_date
|
45
|
+
)
|
46
|
+
japan_last_date = Specifier::SingleDay.get(
|
47
|
+
years: operated_years, date: last_date
|
48
|
+
)
|
45
49
|
|
46
50
|
list = create_list(
|
51
|
+
context: context,
|
47
52
|
operated_years: operated_years, years: years,
|
48
53
|
start_date: japan_start_date, last_date: japan_last_date
|
49
54
|
)
|
@@ -52,8 +57,9 @@ module Zakuro
|
|
52
57
|
end
|
53
58
|
|
54
59
|
#
|
55
|
-
#
|
60
|
+
# 1日検索結果リストを生成する
|
56
61
|
#
|
62
|
+
# @param [Context::Context] context 暦コンテキスト
|
57
63
|
# @param [Array<Base::OperatedYear>] operated_years 運用結果範囲
|
58
64
|
# @param [Array<Base::Year>] years 完全範囲
|
59
65
|
# @param [Result::Data::SingleDay] start_date 和暦開始日
|
@@ -61,17 +67,17 @@ module Zakuro
|
|
61
67
|
#
|
62
68
|
# @return [Array<Result::Single>] 結果リスト
|
63
69
|
#
|
64
|
-
def self.create_list(operated_years: [], years: [],
|
70
|
+
def self.create_list(context:, operated_years: [], years: [],
|
65
71
|
start_date:, last_date:)
|
66
72
|
western_start_date = start_date.day.western_date
|
67
73
|
western_last_date = last_date.day.western_date
|
68
74
|
|
69
75
|
operated_dates = Western::Specifier::MultipleDay.get(
|
70
|
-
years: operated_years, start_date: western_start_date, last_date: western_last_date
|
76
|
+
context: context, years: operated_years, start_date: western_start_date, last_date: western_last_date
|
71
77
|
)
|
72
78
|
|
73
79
|
dates = Western::Specifier::MultipleDay.get(
|
74
|
-
years: years, start_date: western_start_date, last_date: western_last_date
|
80
|
+
context: context, years: years, start_date: western_start_date, last_date: western_last_date
|
75
81
|
)
|
76
82
|
|
77
83
|
create_result_list(dates: dates, operated_dates: operated_dates)
|
@@ -81,7 +87,7 @@ module Zakuro
|
|
81
87
|
#
|
82
88
|
# 完全範囲を取得する
|
83
89
|
#
|
84
|
-
# @param [Context] context 暦コンテキスト
|
90
|
+
# @param [Context::Context] context 暦コンテキスト
|
85
91
|
# @param [Japan::Calendar] start_date 和暦開始日
|
86
92
|
# @param [Japan::Calendar] last_date 和暦終了日
|
87
93
|
#
|
@@ -99,7 +105,7 @@ module Zakuro
|
|
99
105
|
#
|
100
106
|
# 運用結果範囲を取得する
|
101
107
|
#
|
102
|
-
# @param [Context] context 暦コンテキスト
|
108
|
+
# @param [Context::Context] context 暦コンテキスト
|
103
109
|
# @param [Array<Base::Year>] years 完全範囲
|
104
110
|
# @param [Japan::Calendar] start_date 和暦開始日
|
105
111
|
# @param [Japan::Calendar] last_date 和暦終了日
|
@@ -25,7 +25,7 @@ module Zakuro
|
|
25
25
|
#
|
26
26
|
# 生成する
|
27
27
|
#
|
28
|
-
# @param [Context] context 暦コンテキスト
|
28
|
+
# @param [Context::Context] context 暦コンテキスト
|
29
29
|
# @param [Japan::Calendar] date 和暦日
|
30
30
|
#
|
31
31
|
# @return [Result::Single] 一日検索結果(和暦日)
|
@@ -47,7 +47,7 @@ module Zakuro
|
|
47
47
|
#
|
48
48
|
# 完全範囲を取得する
|
49
49
|
#
|
50
|
-
# @param [Context] context 暦コンテキスト
|
50
|
+
# @param [Context::Context] context 暦コンテキスト
|
51
51
|
# @param [Japan::Calendar] date 和暦日
|
52
52
|
#
|
53
53
|
# @return [Array<Base::Year>] 完全範囲
|
@@ -63,7 +63,7 @@ module Zakuro
|
|
63
63
|
#
|
64
64
|
# 1日を取得する
|
65
65
|
#
|
66
|
-
# @param [Context] context 暦コンテキスト
|
66
|
+
# @param [Context::Context] context 暦コンテキスト
|
67
67
|
# @param [Array<Base::Year>] years 完全範囲
|
68
68
|
# @param [Japan::Calendar] date 和暦日
|
69
69
|
#
|
@@ -81,8 +81,8 @@ module Zakuro
|
|
81
81
|
#
|
82
82
|
# 運用結果範囲を取得する
|
83
83
|
#
|
84
|
-
# @param [Context] context 暦コンテキスト
|
85
|
-
# @param [Array<Base::Year>] years 完全範囲
|
84
|
+
# @param [Context::Context] context 暦コンテキスト
|
85
|
+
# @param [Array<Calculation::Base::Year>] years 完全範囲
|
86
86
|
# @param [Japan::Calendar] date 和暦日
|
87
87
|
#
|
88
88
|
# @return [Array<Base::OperatedYear>] 運用結果範囲
|
@@ -98,7 +98,7 @@ module Zakuro
|
|
98
98
|
#
|
99
99
|
# 完全範囲を取得する
|
100
100
|
#
|
101
|
-
# @param [
|
101
|
+
# @param [Array<Calculation::Base::Year>] years 完全範囲
|
102
102
|
# @param [Western::Calendar] date 和暦日
|
103
103
|
#
|
104
104
|
# @return [Array<Base::Year>] 完全範囲
|
@@ -7,6 +7,9 @@ require_relative '../../../../output/logger'
|
|
7
7
|
|
8
8
|
require_relative '../../../base/year'
|
9
9
|
|
10
|
+
require_relative '../../internal/day'
|
11
|
+
require_relative '../../internal/option'
|
12
|
+
|
10
13
|
# :nodoc:
|
11
14
|
module Zakuro
|
12
15
|
# :nodoc:
|
@@ -37,12 +40,12 @@ module Zakuro
|
|
37
40
|
first_date = month.western_date.clone
|
38
41
|
days = date.day - 1
|
39
42
|
western_date = first_date + days
|
43
|
+
day = Day.get(month: month, date: western_date)
|
44
|
+
|
45
|
+
options = Option.create(month: month, day: day)
|
40
46
|
|
41
|
-
Output::Response::SingleDay.
|
42
|
-
|
43
|
-
year: year, month: month,
|
44
|
-
date: western_date, days: days
|
45
|
-
)
|
47
|
+
Output::Response::SingleDay.create(
|
48
|
+
year: year, month: month, day: day, options: options
|
46
49
|
)
|
47
50
|
end
|
48
51
|
|
@@ -55,6 +58,8 @@ module Zakuro
|
|
55
58
|
# @return [Base::Year] 対象年
|
56
59
|
# @return [Monthly::Month] 対象月
|
57
60
|
#
|
61
|
+
# @raise [ArgumentError] 引数エラー
|
62
|
+
#
|
58
63
|
def self.specify(years:, date:)
|
59
64
|
years.each do |year|
|
60
65
|
month = specify_month(year: year, date: date)
|
@@ -23,7 +23,7 @@ module Zakuro
|
|
23
23
|
#
|
24
24
|
# 生成する
|
25
25
|
#
|
26
|
-
# @param [Context] context 暦コンテキスト
|
26
|
+
# @param [Context::Context] context 暦コンテキスト
|
27
27
|
# @param [Western::Calendar] start_date 西暦開始日
|
28
28
|
# @param [Western::Calendar] last_date 西暦終了日
|
29
29
|
#
|
@@ -39,11 +39,11 @@ module Zakuro
|
|
39
39
|
)
|
40
40
|
|
41
41
|
dates = Specifier::MultipleDay.get(
|
42
|
-
years: years, start_date: start_date, last_date: last_date
|
42
|
+
context: context, years: years, start_date: start_date, last_date: last_date
|
43
43
|
)
|
44
44
|
|
45
45
|
operated_dates = Specifier::MultipleDay.get(
|
46
|
-
years: operated_years, start_date: start_date, last_date: last_date
|
46
|
+
context: context, years: operated_years, start_date: start_date, last_date: last_date
|
47
47
|
)
|
48
48
|
|
49
49
|
list = create_result_list(dates: dates, operated_dates: operated_dates)
|
@@ -54,7 +54,7 @@ module Zakuro
|
|
54
54
|
#
|
55
55
|
# 完全範囲を取得する
|
56
56
|
#
|
57
|
-
# @param [Context] context 暦コンテキスト
|
57
|
+
# @param [Context::Context] context 暦コンテキスト
|
58
58
|
# @param [Western::Calendar] start_date 西暦開始日
|
59
59
|
# @param [Western::Calendar] last_date 西暦終了日
|
60
60
|
#
|
@@ -72,7 +72,7 @@ module Zakuro
|
|
72
72
|
#
|
73
73
|
# 運用結果範囲を取得する
|
74
74
|
#
|
75
|
-
# @param [Context] context 暦コンテキスト
|
75
|
+
# @param [Context::Context] context 暦コンテキスト
|
76
76
|
# @param [Array<Base::Year>] years 完全範囲
|
77
77
|
# @param [Western::Calendar] start_date 西暦開始日
|
78
78
|
# @param [Western::Calendar] last_date 西暦終了日
|