zakuro 0.6.1 → 0.7.0

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +3 -0
  3. data/README.md +6 -4
  4. data/VERSION +1 -1
  5. data/doc/operation/transfer.rb +8 -8
  6. data/lib/zakuro/calculation/base/gengou.rb +46 -0
  7. data/lib/zakuro/calculation/era/gengou/{scroll.rb → abstract_scroll.rb} +6 -8
  8. data/lib/zakuro/calculation/era/gengou/dated_scroll.rb +30 -0
  9. data/lib/zakuro/calculation/era/gengou/internal/reserve/{list.rb → abstract_list.rb} +37 -51
  10. data/lib/zakuro/calculation/era/gengou/internal/reserve/{range.rb → abstract_range.rb} +17 -17
  11. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_list.rb +48 -0
  12. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_range.rb +30 -0
  13. data/lib/zakuro/calculation/era/gengou/internal/reserve/empty_link.rb +158 -0
  14. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +125 -0
  15. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_range.rb +75 -0
  16. data/lib/zakuro/calculation/era/gengou/internal/reserve.rb +2 -3
  17. data/lib/zakuro/calculation/era/gengou/named_scroll.rb +30 -0
  18. data/lib/zakuro/calculation/monthly/month.rb +39 -0
  19. data/lib/zakuro/calculation/monthly/operated_month.rb +1 -1
  20. data/lib/zakuro/calculation/range/{full_range.rb → abstract_full_range.rb} +5 -4
  21. data/lib/zakuro/calculation/range/{operated_range.rb → abstract_operation_range.rb} +9 -11
  22. data/lib/zakuro/calculation/range/dated_full_range.rb +32 -0
  23. data/lib/zakuro/calculation/range/dated_operation_range.rb +33 -0
  24. data/lib/zakuro/calculation/range/named_full_range.rb +38 -0
  25. data/lib/zakuro/calculation/range/named_operation_range.rb +36 -0
  26. data/lib/zakuro/calculation/range/operated_solar_terms.rb +0 -2
  27. data/lib/zakuro/calculation/{specifier → summary}/internal/month.rb +1 -1
  28. data/lib/zakuro/calculation/summary/japan/range.rb +152 -0
  29. data/lib/zakuro/calculation/summary/japan/single.rb +118 -0
  30. data/lib/zakuro/calculation/summary/japan/specifier/single_day.rb +91 -0
  31. data/lib/zakuro/calculation/summary/western/range.rb +124 -0
  32. data/lib/zakuro/calculation/summary/western/single.rb +113 -0
  33. data/lib/zakuro/calculation/summary/western/specifier/multiple_day.rb +169 -0
  34. data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +93 -0
  35. data/lib/zakuro/condition.rb +1 -2
  36. data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +89 -74
  37. data/lib/zakuro/era/japan/gengou/alignment/division.rb +125 -122
  38. data/lib/zakuro/era/japan/gengou/alignment/line.rb +141 -122
  39. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +171 -168
  40. data/lib/zakuro/era/japan/gengou/alignment.rb +38 -25
  41. data/lib/zakuro/era/japan/gengou/resource/parser.rb +183 -182
  42. data/lib/zakuro/era/japan/gengou/resource/type.rb +233 -232
  43. data/lib/zakuro/era/japan/gengou/resource/validator.rb +255 -254
  44. data/lib/zakuro/era/japan/gengou/resource.rb +23 -22
  45. data/lib/zakuro/era/japan/gengou.rb +5 -20
  46. data/lib/zakuro/era/western/calendar.rb +9 -9
  47. data/lib/zakuro/exception/case/pattern.rb +35 -0
  48. data/lib/zakuro/exception/case/preset.rb +51 -0
  49. data/lib/zakuro/exception/case/template.rb +48 -0
  50. data/lib/zakuro/exception/cause.rb +28 -0
  51. data/lib/zakuro/exception/exception.rb +37 -0
  52. data/lib/zakuro/exception/zakuro_error.rb +28 -0
  53. data/lib/zakuro/gateway/locale/date.rb +127 -0
  54. data/lib/zakuro/gateway/locale/range.rb +67 -0
  55. data/lib/zakuro/gateway/range.rb +99 -0
  56. data/lib/zakuro/gateway/single.rb +70 -0
  57. data/lib/zakuro/merchant.rb +8 -44
  58. data/lib/zakuro/operation/month/parser.rb +9 -9
  59. data/lib/zakuro/operation/month/type.rb +31 -31
  60. data/lib/zakuro/operation/month/validator.rb +49 -49
  61. data/lib/zakuro/operation/yaml/month.yaml +3736 -3736
  62. data/lib/zakuro/output/logger.rb +17 -3
  63. data/lib/zakuro/result/data/day.rb +43 -0
  64. data/lib/zakuro/result/data/gengou.rb +35 -0
  65. data/lib/zakuro/result/data/month.rb +63 -0
  66. data/lib/zakuro/result/data/single_day.rb +48 -0
  67. data/lib/zakuro/result/data/solar_term.rb +35 -0
  68. data/lib/zakuro/result/data/year.rb +45 -0
  69. data/lib/zakuro/result/operation/month/annotation.rb +40 -0
  70. data/lib/zakuro/result/operation/month/bundle.rb +36 -0
  71. data/lib/zakuro/result/operation/month/history.rb +54 -0
  72. data/lib/zakuro/result/operation/operation.rb +44 -0
  73. data/lib/zakuro/result/result.rb +4 -2
  74. metadata +46 -14
  75. data/lib/zakuro/calculation/specifier/multiple_day.rb +0 -162
  76. data/lib/zakuro/calculation/specifier/single_day.rb +0 -87
  77. data/lib/zakuro/calculation/summary/range.rb +0 -120
  78. data/lib/zakuro/calculation/summary/single.rb +0 -110
  79. data/lib/zakuro/result/data.rb +0 -187
  80. data/lib/zakuro/result/operation.rb +0 -114
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../range/named_operation_range'
4
+
5
+ require_relative '../../range/named_full_range'
6
+
7
+ require_relative '../western/specifier/multiple_day'
8
+
9
+ require_relative '../internal/operation'
10
+
11
+ require_relative './specifier/single_day'
12
+
13
+ # :nodoc:
14
+ module Zakuro
15
+ # :nodoc:
16
+ module Calculation
17
+ # :nodoc:
18
+ module Summary
19
+ # :nodoc:
20
+ module Japan
21
+ #
22
+ # Range 期間
23
+ #
24
+ module Range
25
+ #
26
+ # 生成する
27
+ #
28
+ # @param [Context] context 暦コンテキスト
29
+ # @param [Japan::Calendar] start_date 和暦開始日
30
+ # @param [Japan::Calendar] last_date 和暦終了日
31
+ #
32
+ # @return [Result::Range] 期間検索結果(和暦日)
33
+ #
34
+ def self.get(context:, start_date: Japan::Calendar.new,
35
+ last_date: Japan::Calendar.new)
36
+ years = get_full_range_years(
37
+ context: context, start_date: start_date, last_date: last_date
38
+ )
39
+ operated_years = get_operation_range_years(
40
+ context: context, years: years, start_date: start_date, last_date: last_date
41
+ )
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)
45
+
46
+ list = create_list(
47
+ operated_years: operated_years, years: years,
48
+ start_date: japan_start_date, last_date: japan_last_date
49
+ )
50
+
51
+ Result::Range.new(list: list)
52
+ end
53
+
54
+ #
55
+ # <Description>
56
+ #
57
+ # @param [Array<Base::OperatedYear>] operated_years 運用結果範囲
58
+ # @param [Array<Base::Year>] years 完全範囲
59
+ # @param [Result::Data::SingleDay] start_date 和暦開始日
60
+ # @param [Result::Data::SingleDay] last_date 和暦終了日
61
+ #
62
+ # @return [Array<Result::Single>] 結果リスト
63
+ #
64
+ def self.create_list(operated_years: [], years: [],
65
+ start_date:, last_date:)
66
+ western_start_date = start_date.day.western_date
67
+ western_last_date = last_date.day.western_date
68
+
69
+ operated_dates = Western::Specifier::MultipleDay.get(
70
+ years: operated_years, start_date: western_start_date, last_date: western_last_date
71
+ )
72
+
73
+ dates = Western::Specifier::MultipleDay.get(
74
+ years: years, start_date: western_start_date, last_date: western_last_date
75
+ )
76
+
77
+ create_result_list(dates: dates, operated_dates: operated_dates)
78
+ end
79
+ private_class_method :create_list
80
+
81
+ #
82
+ # 完全範囲を取得する
83
+ #
84
+ # @param [Context] context 暦コンテキスト
85
+ # @param [Japan::Calendar] start_date 和暦開始日
86
+ # @param [Japan::Calendar] last_date 和暦終了日
87
+ #
88
+ # @return [Array<Base::Year>] 完全範囲
89
+ #
90
+ def self.get_full_range_years(context:, start_date: Japan::Calendar.new,
91
+ last_date: Japan::Calendar.new)
92
+ full_range = Calculation::Range::NamedFullRange.new(
93
+ context: context, start_name: start_date.gengou, last_name: last_date.gengou
94
+ )
95
+ full_range.get
96
+ end
97
+ private_class_method :get_full_range_years
98
+
99
+ #
100
+ # 運用結果範囲を取得する
101
+ #
102
+ # @param [Context] context 暦コンテキスト
103
+ # @param [Array<Base::Year>] years 完全範囲
104
+ # @param [Japan::Calendar] start_date 和暦開始日
105
+ # @param [Japan::Calendar] last_date 和暦終了日
106
+ #
107
+ # @return [Array<Base::OperatedYear>] 運用結果範囲
108
+ #
109
+ def self.get_operation_range_years(context:, years:, start_date: Japan::Calendar.new,
110
+ last_date: Japan::Calendar.new)
111
+ operation_range = Calculation::Range::NamedOperationRange.new(
112
+ context: context, years: years,
113
+ start_name: start_date.gengou, last_name: last_date.gengou
114
+ )
115
+ operation_range.get
116
+ end
117
+ private_class_method :get_operation_range_years
118
+
119
+ #
120
+ # 結果リストを生成する
121
+ #
122
+ # @param [Array<Result::Data::SingleDay>] dates 検索結果(計算値)
123
+ # @param [Array<Result::Data::SingleDay>] operated_dates 検索結果(運用値)
124
+ #
125
+ # @return [Array<Result::Single>] 結果リスト
126
+ #
127
+ def self.create_result_list(dates:, operated_dates:)
128
+ result = []
129
+
130
+ return result if dates.size != operated_dates.size
131
+
132
+ (0..(dates.size - 1)).each do |index|
133
+ data = operated_dates[index]
134
+
135
+ date = dates[index]
136
+ operation = Operation.create(calc_date: date)
137
+
138
+ result.push(
139
+ Result::Single.new(
140
+ data: data,
141
+ operation: operation
142
+ )
143
+ )
144
+ end
145
+
146
+ result
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../range/named_operation_range'
4
+
5
+ require_relative '../../range/named_full_range'
6
+
7
+ require_relative '../western/specifier/single_day'
8
+
9
+ require_relative '../internal/operation'
10
+
11
+ require_relative './specifier/single_day'
12
+
13
+ # :nodoc:
14
+ module Zakuro
15
+ # :nodoc:
16
+ module Calculation
17
+ # :nodoc:
18
+ module Summary
19
+ # :nodoc:
20
+ module Japan
21
+ #
22
+ # Single 一日
23
+ #
24
+ module Single
25
+ #
26
+ # 生成する
27
+ #
28
+ # @param [Context] context 暦コンテキスト
29
+ # @param [Japan::Calendar] date 和暦日
30
+ #
31
+ # @return [Result::Single] 一日検索結果(和暦日)
32
+ #
33
+ def self.get(context:, date: Japan::Calendar.new)
34
+ years = get_full_range_years(context: context, date: date)
35
+
36
+ data = get_data(context: context, years: years, date: date)
37
+
38
+ western_date = data.day.western_date
39
+ operation = get_operation(years: years, date: western_date)
40
+
41
+ Result::Single.new(
42
+ data: data,
43
+ operation: operation
44
+ )
45
+ end
46
+
47
+ #
48
+ # 完全範囲を取得する
49
+ #
50
+ # @param [Context] context 暦コンテキスト
51
+ # @param [Japan::Calendar] date 和暦日
52
+ #
53
+ # @return [Array<Base::Year>] 完全範囲
54
+ #
55
+ def self.get_full_range_years(context:, date: Japan::Calendar.new)
56
+ full_range = Calculation::Range::NamedFullRange.new(
57
+ context: context, start_name: date.gengou
58
+ )
59
+ full_range.get
60
+ end
61
+ private_class_method :get_full_range_years
62
+
63
+ #
64
+ # 1日を取得する
65
+ #
66
+ # @param [Context] context 暦コンテキスト
67
+ # @param [Array<Base::Year>] years 完全範囲
68
+ # @param [Japan::Calendar] date 和暦日
69
+ #
70
+ # @return [Data::SingleDay] 1日
71
+ #
72
+ def self.get_data(context:, years:, date: Japan::Calendar.new)
73
+ operated_years = get_operation_range_years(context: context, years: years, date: date)
74
+
75
+ Specifier::SingleDay.get(
76
+ years: operated_years, date: date
77
+ )
78
+ end
79
+ private_class_method :get_data
80
+
81
+ #
82
+ # 運用結果範囲を取得する
83
+ #
84
+ # @param [Context] context 暦コンテキスト
85
+ # @param [Array<Base::Year>] years 完全範囲
86
+ # @param [Japan::Calendar] date 和暦日
87
+ #
88
+ # @return [Array<Base::OperatedYear>] 運用結果範囲
89
+ #
90
+ def self.get_operation_range_years(context:, years:, date: Japan::Calendar.new)
91
+ operation_range = Calculation::Range::NamedOperationRange.new(
92
+ context: context, start_name: date.gengou, years: years
93
+ )
94
+ operation_range.get
95
+ end
96
+ private_class_method :get_operation_range_years
97
+
98
+ #
99
+ # 完全範囲を取得する
100
+ #
101
+ # @param [Context] context 暦コンテキスト
102
+ # @param [Western::Calendar] date 和暦日
103
+ #
104
+ # @return [Array<Base::Year>] 完全範囲
105
+ #
106
+ def self.get_operation(years:, date: Western::Calendar.new)
107
+ calc_date = Western::Specifier::SingleDay.get(
108
+ years: years, date: date
109
+ )
110
+
111
+ Operation.create(calc_date: calc_date)
112
+ end
113
+ private_class_method :get_operation
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../../era/japan/calendar'
4
+ require_relative '../../../../era/western/calendar'
5
+ require_relative '../../../../output/response'
6
+ require_relative '../../../../output/logger'
7
+
8
+ require_relative '../../../base/year'
9
+
10
+ # :nodoc:
11
+ module Zakuro
12
+ # :nodoc:
13
+ module Calculation
14
+ # :nodoc:
15
+ module Summary
16
+ # :nodoc:
17
+ module Japan
18
+ # :nodoc:
19
+ module Specifier
20
+ #
21
+ # SingleDay 一日検索
22
+ #
23
+ module SingleDay
24
+ # @return [Output::Logger] ロガー
25
+ LOGGER = Output::Logger.new(location: 'specifier')
26
+
27
+ #
28
+ # 取得する
29
+ #
30
+ # @param [Array<Year>] yeas 範囲
31
+ # @param [Japan::Calendar] date 和暦日
32
+ #
33
+ # @return [Result::Data::SingleDay] 和暦日
34
+ #
35
+ def self.get(years: [], date: Japan::Calendar.new)
36
+ year, month = specify(years: years, date: date)
37
+ first_date = month.western_date.clone
38
+ days = date.day - 1
39
+ western_date = first_date + days
40
+
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
+ )
46
+ )
47
+ end
48
+
49
+ #
50
+ # 年を特定する
51
+ #
52
+ # @param [Array<Year>] years 範囲
53
+ # @param [Japan::Calendar] date 和暦日
54
+ #
55
+ # @return [Base::Year] 対象年
56
+ # @return [Monthly::Month] 対象月
57
+ #
58
+ def self.specify(years:, date:)
59
+ years.each do |year|
60
+ month = specify_month(year: year, date: date)
61
+ return year, month unless month.invalid?
62
+ end
63
+
64
+ raise ArgumentError, "invalid year range. date: #{date.format}"
65
+ end
66
+ private_class_method :specify
67
+
68
+ #
69
+ # 月を特定する
70
+ #
71
+ # @param [Base::Year] year 年
72
+ # @param [Japan::Calendar] date 和暦日
73
+ #
74
+ # @return [Monthly::Month] 対象月
75
+ #
76
+ def self.specify_month(year:, date:)
77
+ months = year.months
78
+
79
+ months.each do |month|
80
+ return month if month.include_by_japan_date?(date: date)
81
+ end
82
+
83
+ Monthly::Month.new
84
+ end
85
+ private_class_method :specify_month
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../range/dated_operation_range'
4
+
5
+ require_relative '../../range/dated_full_range'
6
+
7
+ require_relative './specifier/multiple_day'
8
+
9
+ require_relative '../internal/operation'
10
+
11
+ # :nodoc:
12
+ module Zakuro
13
+ # :nodoc:
14
+ module Calculation
15
+ # :nodoc:
16
+ module Summary
17
+ # :nodoc:
18
+ module Western
19
+ #
20
+ # Range 期間
21
+ #
22
+ module Range
23
+ #
24
+ # 生成する
25
+ #
26
+ # @param [Context] context 暦コンテキスト
27
+ # @param [Western::Calendar] start_date 西暦開始日
28
+ # @param [Western::Calendar] last_date 西暦終了日
29
+ #
30
+ # @return [Result::Range] 期間検索結果(和暦日)
31
+ #
32
+ def self.get(context:, start_date: Western::Calendar.new,
33
+ last_date: Western::Calendar.new)
34
+ years = get_full_range_years(
35
+ context: context, start_date: start_date, last_date: last_date
36
+ )
37
+ operated_years = get_operation_range_years(
38
+ context: context, years: years, start_date: start_date, last_date: last_date
39
+ )
40
+
41
+ dates = Specifier::MultipleDay.get(
42
+ years: years, start_date: start_date, last_date: last_date
43
+ )
44
+
45
+ operated_dates = Specifier::MultipleDay.get(
46
+ years: operated_years, start_date: start_date, last_date: last_date
47
+ )
48
+
49
+ list = create_result_list(dates: dates, operated_dates: operated_dates)
50
+
51
+ Result::Range.new(list: list)
52
+ end
53
+
54
+ #
55
+ # 完全範囲を取得する
56
+ #
57
+ # @param [Context] context 暦コンテキスト
58
+ # @param [Western::Calendar] start_date 西暦開始日
59
+ # @param [Western::Calendar] last_date 西暦終了日
60
+ #
61
+ # @return [Array<Base::Year>] 完全範囲
62
+ #
63
+ def self.get_full_range_years(context:, start_date: Western::Calendar.new,
64
+ last_date: Western::Calendar.new)
65
+ full_range = Calculation::Range::DatedFullRange.new(
66
+ context: context, start_date: start_date, last_date: last_date
67
+ )
68
+ full_range.get
69
+ end
70
+ private_class_method :get_full_range_years
71
+
72
+ #
73
+ # 運用結果範囲を取得する
74
+ #
75
+ # @param [Context] context 暦コンテキスト
76
+ # @param [Array<Base::Year>] years 完全範囲
77
+ # @param [Western::Calendar] start_date 西暦開始日
78
+ # @param [Western::Calendar] last_date 西暦終了日
79
+ #
80
+ # @return [Array<Base::OperatedYear>] 運用結果範囲
81
+ #
82
+ def self.get_operation_range_years(context:, years:, start_date: Western::Calendar.new,
83
+ last_date: Western::Calendar.new)
84
+ operation_range = Calculation::Range::DatedOperationRange.new(
85
+ context: context, start_date: start_date, last_date: last_date, years: years
86
+ )
87
+ operation_range.get
88
+ end
89
+ private_class_method :get_operation_range_years
90
+
91
+ #
92
+ # 結果リストを生成する
93
+ #
94
+ # @param [Array<Result::Data::SingleDay>] dates 検索結果(計算値)
95
+ # @param [Array<Result::Data::SingleDay>] operated_dates 検索結果(運用値)
96
+ #
97
+ # @return [Array<Result::Single>] 結果リスト
98
+ #
99
+ def self.create_result_list(dates:, operated_dates:)
100
+ result = []
101
+
102
+ return result if dates.size != operated_dates.size
103
+
104
+ (0..(dates.size - 1)).each do |index|
105
+ data = operated_dates[index]
106
+
107
+ date = dates[index]
108
+ operation = Operation.create(calc_date: date)
109
+
110
+ result.push(
111
+ Result::Single.new(
112
+ data: data,
113
+ operation: operation
114
+ )
115
+ )
116
+ end
117
+
118
+ result
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../range/dated_operation_range'
4
+
5
+ require_relative '../../range/dated_full_range'
6
+
7
+ require_relative './specifier/single_day'
8
+
9
+ require_relative '../internal/operation'
10
+
11
+ # :nodoc:
12
+ module Zakuro
13
+ # :nodoc:
14
+ module Calculation
15
+ # :nodoc:
16
+ module Summary
17
+ # :nodoc:
18
+ module Western
19
+ #
20
+ # Single 一日
21
+ #
22
+ module Single
23
+ #
24
+ # 生成する
25
+ #
26
+ # @param [Context] context 暦コンテキスト
27
+ # @param [Western::Calendar] date 西暦日
28
+ #
29
+ # @return [Result::Single] 一日検索結果(和暦日)
30
+ #
31
+ def self.get(context:, date: Western::Calendar.new)
32
+ years = get_full_range_years(context: context, date: date)
33
+
34
+ data = get_data(context: context, years: years, date: date)
35
+
36
+ operation = get_operation(years: years, date: date)
37
+
38
+ Result::Single.new(
39
+ data: data,
40
+ operation: operation
41
+ )
42
+ end
43
+
44
+ #
45
+ # 完全範囲を取得する
46
+ #
47
+ # @param [Context] context 暦コンテキスト
48
+ # @param [Western::Calendar] date 西暦日
49
+ #
50
+ # @return [Array<Base::Year>] 完全範囲
51
+ #
52
+ def self.get_full_range_years(context:, date: Western::Calendar.new)
53
+ full_range = Calculation::Range::DatedFullRange.new(context: context, start_date: date)
54
+ full_range.get
55
+ end
56
+ private_class_method :get_full_range_years
57
+
58
+ #
59
+ # 運用結果範囲を取得する
60
+ #
61
+ # @param [Context] context 暦コンテキスト
62
+ # @param [Array<Base::Year>] years 完全範囲
63
+ # @param [Western::Calendar] date 西暦日
64
+ #
65
+ # @return [Array<Base::OperatedYear>] 運用結果範囲
66
+ #
67
+ def self.get_operation_range_years(context:, years:, date: Western::Calendar.new)
68
+ operation_range = Calculation::Range::DatedOperationRange.new(
69
+ context: context, start_date: date, years: years
70
+ )
71
+ operation_range.get
72
+ end
73
+ private_class_method :get_operation_range_years
74
+
75
+ #
76
+ # 1日を取得する
77
+ #
78
+ # @param [Context] context 暦コンテキスト
79
+ # @param [Array<Base::Year>] years 完全範囲
80
+ # @param [Western::Calendar] date 西暦日
81
+ #
82
+ # @return [Data::SingleDay] 1日
83
+ #
84
+ def self.get_data(context:, years:, date: Western::Calendar.new)
85
+ operated_years = get_operation_range_years(context: context, years: years, date: date)
86
+
87
+ Specifier::SingleDay.get(
88
+ years: operated_years, date: date
89
+ )
90
+ end
91
+ private_class_method :get_data
92
+
93
+ #
94
+ # 完全範囲を取得する
95
+ #
96
+ # @param [Context] context 暦コンテキスト
97
+ # @param [Western::Calendar] date 西暦日
98
+ #
99
+ # @return [Array<Base::Year>] 完全範囲
100
+ #
101
+ def self.get_operation(years:, date: Western::Calendar.new)
102
+ calc_date = Specifier::SingleDay.get(
103
+ years: years, date: date
104
+ )
105
+
106
+ Operation.create(calc_date: calc_date)
107
+ end
108
+ private_class_method :get_operation
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end