zakuro 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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 西暦終了日