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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +37 -10
  3. data/VERSION +1 -1
  4. data/doc/dropped_date.md +93 -0
  5. data/doc/error.md +45 -0
  6. data/lib/zakuro/calculation/base/day.rb +52 -0
  7. data/lib/zakuro/calculation/base/operated_year.rb +3 -3
  8. data/lib/zakuro/calculation/base/year.rb +4 -4
  9. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +5 -3
  10. data/lib/zakuro/calculation/monthly/initialized_month.rb +1 -1
  11. data/lib/zakuro/calculation/monthly/month.rb +3 -3
  12. data/lib/zakuro/calculation/monthly/operated_month.rb +1 -1
  13. data/lib/zakuro/calculation/option/dropped_date/abstract_parameter.rb +44 -0
  14. data/lib/zakuro/calculation/option/dropped_date/location.rb +135 -0
  15. data/lib/zakuro/calculation/range/abstract_full_range.rb +10 -8
  16. data/lib/zakuro/calculation/range/abstract_operation_range.rb +2 -2
  17. data/lib/zakuro/calculation/range/dated_full_range.rb +1 -1
  18. data/lib/zakuro/calculation/range/dated_operation_range.rb +1 -1
  19. data/lib/zakuro/calculation/range/medieval_annual_range.rb +2 -2
  20. data/lib/zakuro/calculation/range/named_full_range.rb +1 -1
  21. data/lib/zakuro/calculation/range/named_operation_range.rb +1 -1
  22. data/lib/zakuro/calculation/range/operated_solar_terms.rb +9 -9
  23. data/lib/zakuro/calculation/range/transfer/year_boundary.rb +6 -6
  24. data/lib/zakuro/calculation/stella/solar/abstract_location.rb +2 -0
  25. data/lib/zakuro/calculation/summary/internal/day.rb +40 -0
  26. data/lib/zakuro/calculation/summary/internal/month.rb +15 -7
  27. data/lib/zakuro/calculation/summary/internal/option.rb +85 -0
  28. data/lib/zakuro/calculation/summary/japan/range.rb +15 -9
  29. data/lib/zakuro/calculation/summary/japan/single.rb +6 -6
  30. data/lib/zakuro/calculation/summary/japan/specifier/single_day.rb +10 -5
  31. data/lib/zakuro/calculation/summary/western/range.rb +5 -5
  32. data/lib/zakuro/calculation/summary/western/single.rb +9 -9
  33. data/lib/zakuro/calculation/summary/western/specifier/multiple_day.rb +15 -10
  34. data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +12 -7
  35. data/lib/zakuro/calculation/type/optional.rb +46 -0
  36. data/lib/zakuro/condition.rb +60 -20
  37. data/lib/zakuro/context/context.rb +44 -0
  38. data/lib/zakuro/context/option.rb +117 -0
  39. data/lib/zakuro/context/version_class_resolver.rb +110 -0
  40. data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +4 -0
  41. data/lib/zakuro/era/japan/gengou/resource/parser.rb +2 -0
  42. data/lib/zakuro/era/japan/gengou/resource/type.rb +6 -0
  43. data/lib/zakuro/era/western/calendar.rb +4 -0
  44. data/lib/zakuro/exception/case/pattern.rb +39 -3
  45. data/lib/zakuro/exception/exception.rb +3 -3
  46. data/lib/zakuro/exception/zakuro_error.rb +19 -1
  47. data/lib/zakuro/gateway/range.rb +2 -2
  48. data/lib/zakuro/gateway/single.rb +1 -1
  49. data/lib/zakuro/merchant.rb +78 -8
  50. data/lib/zakuro/operation/month/parser.rb +2 -0
  51. data/lib/zakuro/output/response.rb +24 -57
  52. data/lib/zakuro/result/data/option/abstract_option.rb +37 -0
  53. data/lib/zakuro/result/data/option/dropped_date/calculation.rb +47 -0
  54. data/lib/zakuro/result/data/option/dropped_date/option.rb +47 -0
  55. data/lib/zakuro/result/data/option/dropped_date/solar_term.rb +48 -0
  56. data/lib/zakuro/result/data/single_day.rb +9 -1
  57. data/lib/zakuro/result/operation/{operation.rb → bundle.rb} +0 -0
  58. data/lib/zakuro/result/result.rb +1 -1
  59. data/lib/zakuro/tools/stringifier.rb +26 -3
  60. data/lib/zakuro/version/daien/cycle/remainder.rb +2 -2
  61. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +31 -0
  62. data/lib/zakuro/version/daien/range/annual_range.rb +1 -1
  63. data/lib/zakuro/version/daien/stella/lunar/adjustment.rb +2 -0
  64. data/lib/zakuro/version/daien/stella/lunar/value.rb +2 -0
  65. data/lib/zakuro/version/genka/cycle/remainder.rb +2 -2
  66. data/lib/zakuro/version/genka/option/dropped_date/parameter.rb +31 -0
  67. data/lib/zakuro/version/genka/range/annual_range.rb +1 -1
  68. data/lib/zakuro/version/gihou/cycle/remainder.rb +2 -2
  69. data/lib/zakuro/version/gihou/option/dropped_date/parameter.rb +31 -0
  70. data/lib/zakuro/version/gihou/range/annual_range.rb +1 -1
  71. data/lib/zakuro/version/gihou/stella/lunar/adjustment.rb +2 -0
  72. data/lib/zakuro/version/gihou/stella/lunar/value.rb +2 -0
  73. data/lib/zakuro/version/senmyou/const/remainder.rb +5 -0
  74. data/lib/zakuro/version/senmyou/cycle/remainder.rb +37 -2
  75. data/lib/zakuro/version/senmyou/option/dropped_date/parameter.rb +33 -0
  76. data/lib/zakuro/version/senmyou/range/annual_range.rb +1 -1
  77. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +2 -0
  78. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +2 -0
  79. metadata +26 -9
  80. data/lib/zakuro/version/context.rb +0 -44
  81. 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 '../../version/context'
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
- context = Context.new(version_name: version.name)
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: context, start_year: start_year, last_year: last_year
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
  #
@@ -16,7 +16,7 @@ module Zakuro
16
16
  #
17
17
  # 初期化
18
18
  #
19
- # @param [Context] context 暦コンテキスト
19
+ # @param [Context::Context] context 暦コンテキスト
20
20
  # @param [Western::Calendar] start_date 開始日
21
21
  # @param [Western::Calendar] last_date 終了日
22
22
  #
@@ -17,7 +17,7 @@ module Zakuro
17
17
  #
18
18
  # 初期化
19
19
  #
20
- # @param [Context] context 暦コンテキスト
20
+ # @param [Context::Context] context 暦コンテキスト
21
21
  # @param [Western::Calendar] start_date 開始日
22
22
  # @param [Western::Calendar] last_date 終了日
23
23
  # @param [Array<Year>] years 年データ(完全範囲)
@@ -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年データ
@@ -19,7 +19,7 @@ module Zakuro
19
19
  #
20
20
  # 初期化
21
21
  #
22
- # @param [Context] context 暦コンテキスト
22
+ # @param [Context::Context] context 暦コンテキスト
23
23
  # @param [String] start_name 開始元号名
24
24
  # @param [String] last_name 終了元号名
25
25
  #
@@ -20,7 +20,7 @@ module Zakuro
20
20
  #
21
21
  # 初期化
22
22
  #
23
- # @param [Context] context 暦コンテキスト
23
+ # @param [Context::Context] context 暦コンテキスト
24
24
  # @param [String] start_name 開始元号名
25
25
  # @param [String] last_name 終了元号名
26
26
  # @param [Array<Year>] years 年データ(完全範囲)
@@ -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] 当年月ありの対象年
@@ -105,6 +105,8 @@ module Zakuro
105
105
  #
106
106
  # 初回の入定気を定める
107
107
  #
108
+ # @raise [ArgumentError] 引数エラー
109
+ #
108
110
  def define_first
109
111
  # 入定気の起算方法
110
112
  # 概要:
@@ -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 = Output::Response::SingleDay.save_single_day(
54
- param: Output::Response::SingleDay::Param.new(
55
- year: @year, month: @month,
56
- date: current_date, days: index
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(day)
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(years: operated_years, date: start_date)
44
- japan_last_date = Specifier::SingleDay.get(years: operated_years, date: last_date)
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
- # <Description>
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 [Context] context 暦コンテキスト
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.save_single_day(
42
- param: Output::Response::SingleDay::Param.new(
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 西暦終了日