zakuro 0.6.0 → 0.6.1

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -3
  3. data/VERSION +1 -1
  4. data/lib/zakuro/calculation/base/gengou.rb +4 -4
  5. data/lib/zakuro/calculation/base/linear_gengou.rb +6 -6
  6. data/lib/zakuro/calculation/era/gengou/internal/connector.rb +107 -0
  7. data/lib/zakuro/calculation/era/gengou/internal/counter.rb +214 -0
  8. data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +104 -0
  9. data/lib/zakuro/calculation/era/gengou/internal/reserve/list.rb +244 -0
  10. data/lib/zakuro/calculation/era/gengou/internal/reserve/range.rb +193 -0
  11. data/lib/zakuro/calculation/{gengou → era/gengou}/internal/reserve.rb +6 -6
  12. data/lib/zakuro/calculation/{gengou → era/gengou}/scroll.rb +44 -95
  13. data/lib/zakuro/calculation/{version → era/version}/internal/crawler.rb +7 -7
  14. data/lib/zakuro/calculation/{version → era/version}/internal/range.rb +4 -4
  15. data/lib/zakuro/calculation/{version → era/version}/version.rb +3 -3
  16. data/lib/zakuro/calculation/monthly/month.rb +2 -2
  17. data/lib/zakuro/calculation/range/full_range.rb +18 -19
  18. data/lib/zakuro/calculation/range/operated_range.rb +3 -4
  19. data/lib/zakuro/calculation/specifier/internal/month.rb +84 -0
  20. data/lib/zakuro/calculation/specifier/multiple_day.rb +162 -0
  21. data/lib/zakuro/calculation/specifier/single_day.rb +2 -2
  22. data/lib/zakuro/calculation/summary/internal/operation.rb +98 -0
  23. data/lib/zakuro/calculation/summary/range.rb +120 -0
  24. data/lib/zakuro/calculation/summary/single.rb +45 -67
  25. data/lib/zakuro/condition.rb +14 -0
  26. data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +106 -0
  27. data/lib/zakuro/era/japan/gengou/alignment/division.rb +165 -0
  28. data/lib/zakuro/era/japan/gengou/alignment/line.rb +156 -0
  29. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +184 -0
  30. data/lib/zakuro/era/japan/gengou/alignment.rb +42 -0
  31. data/lib/zakuro/era/japan/gengou/resource/parser.rb +242 -0
  32. data/lib/zakuro/era/japan/gengou/resource/type.rb +292 -0
  33. data/lib/zakuro/era/japan/gengou/resource/validator.rb +346 -0
  34. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-001-until-south.yaml +2 -2
  35. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-002-from-north.yaml +2 -2
  36. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-003-modern.yaml +2 -2
  37. data/lib/zakuro/era/japan/gengou/resource.rb +32 -0
  38. data/lib/zakuro/era/japan/gengou.rb +34 -73
  39. data/lib/zakuro/era/japan/version.rb +18 -18
  40. data/lib/zakuro/merchant.rb +41 -3
  41. data/lib/zakuro/operation/month/validator.rb +1 -1
  42. data/lib/zakuro/result/result.rb +17 -0
  43. data/lib/zakuro/version/senmyou/README.md +11 -7
  44. metadata +32 -20
  45. data/lib/zakuro/calculation/gengou/internal/counter.rb +0 -129
  46. data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +0 -183
  47. data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +0 -382
  48. data/lib/zakuro/era/japan/gengou/parser.rb +0 -237
  49. data/lib/zakuro/era/japan/gengou/type.rb +0 -285
  50. data/lib/zakuro/era/japan/gengou/validator.rb +0 -341
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../../era/japan/version'
3
+ require_relative '../../../../era/japan/version'
4
4
  require_relative './range'
5
5
 
6
6
  # :nodoc:
@@ -17,12 +17,12 @@ module Zakuro
17
17
  # 暦の範囲を取得する
18
18
  #
19
19
  # @param [Integer] start_year 開始西暦年
20
- # @param [Integer] end_year 終了西暦年
20
+ # @param [Integer] last_year 終了西暦年
21
21
  #
22
22
  # @return [Array<Range>] 暦の範囲
23
23
  #
24
- def self.get(start_year:, end_year:)
25
- ranges = Japan::Version.ranges_with_year(start_year: start_year, end_year: end_year)
24
+ def self.get(start_year:, last_year:)
25
+ ranges = Japan::Version.ranges_with_year(start_year: start_year, last_year: last_year)
26
26
 
27
27
  result = []
28
28
 
@@ -32,13 +32,13 @@ module Zakuro
32
32
  range_start_year = range.start_year
33
33
  range_start_year = start_year if start_year > range.start_year
34
34
 
35
- range_end_year = range.end_year
36
- range_end_year = end_year if end_year < range.end_year
35
+ range_last_year = range.last_year
36
+ range_last_year = last_year if last_year < range.last_year
37
37
 
38
38
  result.push(
39
39
  Range.new(
40
40
  name: range.name, start_date: range.start_date.clone,
41
- start_year: range_start_year, end_year: range_end_year
41
+ start_year: range_start_year, last_year: range_last_year
42
42
  )
43
43
  )
44
44
  end
@@ -17,7 +17,7 @@ module Zakuro
17
17
  # @return [Integer] 開始西暦年
18
18
  attr_reader :start_year
19
19
  # @return [Integer] 終了西暦年
20
- attr_reader :end_year
20
+ attr_reader :last_year
21
21
 
22
22
  #
23
23
  # 初期化
@@ -25,13 +25,13 @@ module Zakuro
25
25
  # @param [String] name 暦名
26
26
  # @param [Western::Calendar] start_date 暦の開始日
27
27
  # @param [Integer] start_year 開始西暦年
28
- # @param [Integer] end_year 終了西暦年
28
+ # @param [Integer] last_year 終了西暦年
29
29
  #
30
- def initialize(name:, start_date:, start_year:, end_year:)
30
+ def initialize(name:, start_date:, start_year:, last_year:)
31
31
  @name = name
32
32
  @start_date = start_date
33
33
  @start_year = start_year
34
- @end_year = end_year
34
+ @last_year = last_year
35
35
  end
36
36
  end
37
37
  end
@@ -12,12 +12,12 @@ module Zakuro
12
12
  # 暦の範囲を取得する
13
13
  #
14
14
  # @param [Integer] start_year 開始西暦年
15
- # @param [Integer] end_year 終了西暦年
15
+ # @param [Integer] last_year 終了西暦年
16
16
  #
17
17
  # @return [Array<Range>] 暦の範囲
18
18
  #
19
- def self.get(start_year:, end_year:)
20
- Crawler.get(start_year: start_year, end_year: end_year)
19
+ def self.get(start_year:, last_year:)
20
+ Crawler.get(start_year: start_year, last_year: last_year)
21
21
  end
22
22
  end
23
23
  end
@@ -202,7 +202,7 @@ module Zakuro
202
202
  #
203
203
  # @return [Western::Calendar] 月の終了日
204
204
  #
205
- def end_date
205
+ def last_date
206
206
  return Western::Calendar.new if western_date.invalid?
207
207
 
208
208
  western_date.clone + days - 1
@@ -224,7 +224,7 @@ module Zakuro
224
224
 
225
225
  return false if date < start_date
226
226
 
227
- return false if date > end_date
227
+ return false if date > last_date
228
228
 
229
229
  true
230
230
  end
@@ -5,13 +5,12 @@ require_relative '../../version/context'
5
5
  require_relative '../../era/western/calendar'
6
6
  require_relative '../../output/logger'
7
7
 
8
- require_relative '../gengou/scroll'
8
+ require_relative '../era/gengou/scroll'
9
+ require_relative '../era/version/version'
9
10
 
10
11
  require_relative '../base/gengou'
11
12
  require_relative '../base/year'
12
13
 
13
- require_relative '../version/version'
14
-
15
14
  require_relative './transfer/year_boundary'
16
15
 
17
16
  require_relative './transfer/gengou_scroller'
@@ -42,7 +41,7 @@ module Zakuro
42
41
  # @return [Western::Calendar] 開始日
43
42
  attr_reader :start_date
44
43
  # @return [Western::Calendar] 終了日
45
- attr_reader :end_date
44
+ attr_reader :last_date
46
45
  # @return [MultiGengouRoller] 改元処理
47
46
  attr_reader :scroll
48
47
 
@@ -54,16 +53,16 @@ module Zakuro
54
53
  #
55
54
  # @param [Context] context 暦コンテキスト
56
55
  # @param [Western::Calendar] start_date 開始日
57
- # @param [Western::Calendar] end_date 終了日
56
+ # @param [Western::Calendar] last_date 終了日
58
57
  #
59
- def initialize(context:, start_date: Western::Calendar.new, end_date: Western::Calendar.new)
58
+ def initialize(context:, start_date: Western::Calendar.new, last_date: Western::Calendar.new)
60
59
  @start_date = start_date
61
- @end_date = end_date
60
+ @last_date = last_date
62
61
  return if invalid?
63
62
 
64
63
  # TODO: 現時点では使用していない。特定の暦を指定できるようになった状態で使用する
65
64
  @context = context
66
- @scroll = Gengou::Scroll.new(start_date: start_date, end_date: end_date)
65
+ @scroll = Gengou::Scroll.new(start_date: start_date, last_date: last_date)
67
66
  end
68
67
 
69
68
  #
@@ -104,19 +103,19 @@ module Zakuro
104
103
  result = []
105
104
 
106
105
  start_year = @scroll.western_start_year
107
- end_year = @scroll.western_end_year
106
+ last_year = @scroll.western_last_year
108
107
 
109
- versions = Version.get(start_year: start_year, end_year: end_year)
108
+ versions = Version.get(start_year: start_year, last_year: last_year)
110
109
 
111
110
  versions.each_with_index do |version, index|
112
111
  context = Context.new(version_name: version.name)
113
112
  start_year = version.start_year
114
- end_year = version.end_year
113
+ last_year = version.last_year
115
114
  # 最後の暦だけ1年足す(次の元号の開始年まで計算するケースあり)
116
- end_year += 1 if (index + 1) == versions.size
115
+ last_year += 1 if (index + 1) == versions.size
117
116
 
118
117
  years = boundary_resolved_ranges(
119
- context: context, start_year: start_year, end_year: end_year
118
+ context: context, start_year: start_year, last_year: last_year
120
119
  )
121
120
  result.concat(years)
122
121
  end
@@ -129,13 +128,13 @@ module Zakuro
129
128
  #
130
129
  # @param [Context] context 暦コンテキスト
131
130
  # @param [Integer] start_year 開始西暦年
132
- # @param [Integer] end_year 終了西暦年
131
+ # @param [Integer] last_year 終了西暦年
133
132
  #
134
133
  # @return [Array<Base::Year>] 年境界解決済みの範囲
135
134
  #
136
- def boundary_resolved_ranges(context:, start_year:, end_year:)
135
+ def boundary_resolved_ranges(context:, start_year:, last_year:)
137
136
  ranges = annual_ranges(
138
- context: context, start_year: start_year, end_year: end_year
137
+ context: context, start_year: start_year, last_year: last_year
139
138
  )
140
139
 
141
140
  Transfer::YearBoundary.get(
@@ -148,15 +147,15 @@ module Zakuro
148
147
  #
149
148
  # @param [Context] context 暦コンテキスト
150
149
  # @param [Integer] start_year 開始西暦年
151
- # @param [Integer] end_year 終了西暦年
150
+ # @param [Integer] last_year 終了西暦年
152
151
  #
153
152
  # @return [Array<Base::Year>] 年データ(冬至基準)
154
153
  #
155
- def annual_ranges(context:, start_year:, end_year:)
154
+ def annual_ranges(context:, start_year:, last_year:)
156
155
  annual_range = context.resolver.annual_range
157
156
 
158
157
  years = []
159
- (start_year..(end_year + 1)).each do |year|
158
+ (start_year..(last_year + 1)).each do |year|
160
159
  years.push(
161
160
  annual_range.get(
162
161
  context: context, western_year: year
@@ -29,14 +29,14 @@ module Zakuro
29
29
  #
30
30
  # @param [Context] context 暦コンテキスト
31
31
  # @param [Western::Calendar] start_date 開始日
32
- # @param [Western::Calendar] end_date 終了日
32
+ # @param [Western::Calendar] last_date 終了日
33
33
  # @param [Array<Year>] years 年データ(完全範囲)
34
34
  #
35
- def initialize(context:, start_date: Western::Calendar.new, end_date: Western::Calendar.new,
35
+ def initialize(context:, start_date: Western::Calendar.new, last_date: Western::Calendar.new,
36
36
  years: [])
37
37
  @context = context
38
38
  @years = years
39
- @scroll = Gengou::Scroll.new(start_date: start_date, end_date: end_date)
39
+ @scroll = Gengou::Scroll.new(start_date: start_date, last_date: last_date)
40
40
  @operated_solar_terms = OperatedSolarTerms.new(context: context, years: @years)
41
41
  @operated_solar_terms.create
42
42
  end
@@ -83,7 +83,6 @@ module Zakuro
83
83
  # @param [Array<OperatedYear>] operated_years 運用結果範囲
84
84
  #
85
85
  def self.move(operated_years:)
86
- # FIXME: この方式は完全ではない。範囲の1年前/1年後が必要
87
86
  move_into_next_year(operated_years: operated_years)
88
87
  move_into_last_year(operated_years: operated_years)
89
88
  end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../output/response'
4
+
5
+ # :nodoc:
6
+ module Zakuro
7
+ # :nodoc:
8
+ module Calculation
9
+ # :nodoc:
10
+ module Specifier
11
+ #
12
+ # Month 特定月
13
+ #
14
+ class Month
15
+ # @return [Western::Calendar] 西暦開始日
16
+ attr_reader :start_date
17
+ # @return [Western::Calendar] 西暦終了日
18
+ attr_reader :last_date
19
+ # @return [Base::Year] 年
20
+ attr_reader :year
21
+ # @return [Monthly::Month] 月
22
+ attr_reader :month
23
+
24
+ #
25
+ # 初期化
26
+ #
27
+ # @param [Western::Calendar] start_date 西暦開始日
28
+ # @param [Western::Calendar] last_date 西暦終了日
29
+ # @param [Base::Year] year 年
30
+ # @param [Monthly::Month] month 月
31
+ #
32
+ def initialize(start_date:, last_date:, year:, month:)
33
+ @start_date = start_date
34
+ @last_date = last_date
35
+ @year = year
36
+ @month = month
37
+ end
38
+
39
+ #
40
+ # 取得する
41
+ #
42
+ # @return [Array<Result::Data::SingleDay>] 1日データ
43
+ #
44
+ def get
45
+ result = []
46
+ first_date = @month.western_date.clone
47
+
48
+ (0..@month.days).each do |index|
49
+ current_date = first_date.clone + index
50
+
51
+ next unless include?(date: current_date)
52
+
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
+ )
58
+ )
59
+
60
+ result.push(day)
61
+ end
62
+
63
+ result
64
+ end
65
+
66
+ #
67
+ # 含まれるか
68
+ #
69
+ # @param [Western::Calendar] date 西暦日
70
+ #
71
+ # @return [True] 含む
72
+ # @return [False] 含まない
73
+ #
74
+ def include?(date:)
75
+ return false if date < @start_date
76
+
77
+ return false if date > @last_date
78
+
79
+ true
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base/year'
4
+
5
+ require_relative '../../era/western/calendar'
6
+ require_relative '../../output/response'
7
+ require_relative '../../output/logger'
8
+
9
+ require_relative './internal/month'
10
+
11
+ # :nodoc:
12
+ module Zakuro
13
+ # :nodoc:
14
+ module Calculation
15
+ # :nodoc:
16
+ module Specifier
17
+ #
18
+ # MultipleDay 複数日検索
19
+ #
20
+ module MultipleDay
21
+ # @return [Output::Logger] ロガー
22
+ LOGGER = Output::Logger.new(location: 'specifier')
23
+
24
+ #
25
+ # 取得する
26
+ #
27
+ # @param [Array<Base::Year>] years 範囲
28
+ # @param [Western::Calendar] start_date 西暦開始日
29
+ # @param [Western::Calendar] last_date 西暦終了日
30
+ #
31
+ # @return [Array<Result::Data::SingleDay>] 期間検索結果(和暦日)
32
+ #
33
+ def self.get(years: [], start_date: Western::Calendar.new, last_date: Western::Calendar.new)
34
+ months = specify(years: years, start_date: start_date, last_date: last_date)
35
+
36
+ result = []
37
+ months.each do |month|
38
+ result |= month.get
39
+ end
40
+
41
+ result
42
+ end
43
+
44
+ #
45
+ # 年を特定する
46
+ #
47
+ # @param [Array<Year>] years 範囲
48
+ # @param [Western::Calendar] start_date 西暦開始日
49
+ # @param [Western::Calendar] last_date 西暦終了日
50
+ #
51
+ # @return [Array<Month>] 特定月
52
+ #
53
+ def self.specify(years: [], start_date: Western::Calendar.new,
54
+ last_date: Western::Calendar.new)
55
+ result = []
56
+ years.each do |year|
57
+ result |= specify_month(
58
+ year: year, start_date: start_date, last_date: last_date
59
+ )
60
+ end
61
+
62
+ result
63
+ end
64
+ private_class_method :specify
65
+
66
+ # :reek:TooManyStatements { max_statements: 7 }
67
+
68
+ #
69
+ # 月を特定する
70
+ #
71
+ # @param [Year] year 年
72
+ # @param [Western::Calendar] start_date 西暦開始日
73
+ # @param [Western::Calendar] last_date 西暦終了日
74
+ #
75
+ # @return [Month] 対象月
76
+ #
77
+ def self.specify_month(year:, start_date: Western::Calendar.new,
78
+ last_date: Western::Calendar.new)
79
+ months = year.months
80
+
81
+ specify_months = []
82
+ months.each do |month|
83
+ next unless include?(month: month, start_date: start_date, last_date: last_date)
84
+
85
+ monthly_start_date = month.western_date.clone
86
+ monthly_last_date = month.last_date.clone
87
+
88
+ monthly_start_date = start_date.clone if start_date > monthly_start_date
89
+
90
+ monthly_last_date = last_date.clone if last_date < monthly_last_date
91
+
92
+ specify_months.push(
93
+ Month.new(year: year, month: month,
94
+ start_date: monthly_start_date, last_date: monthly_last_date)
95
+ )
96
+ end
97
+
98
+ specify_months
99
+ end
100
+ private_class_method :specify_month
101
+
102
+ #
103
+ # 月が範囲に含まれるか
104
+ #
105
+ # @param [Monthly::Month] month 月
106
+ # @param [Western::Calendar] start_date 西暦開始日
107
+ # @param [Western::Calendar] last_date 西暦終了日
108
+ #
109
+ # @return [True] 含む
110
+ # @return [False] 含まない
111
+ #
112
+ def self.include?(month:, start_date:, last_date:)
113
+ monthly_start_date = month.western_date.clone
114
+ monthly_last_date = month.last_date.clone
115
+
116
+ return false if monthly_start_date.invalid?
117
+
118
+ return false if monthly_last_date.invalid?
119
+
120
+ return false if under(monthly_start_date: monthly_start_date,
121
+ start_date: start_date, last_date: last_date)
122
+
123
+ return false if over(monthly_last_date: monthly_last_date,
124
+ start_date: start_date, last_date: last_date)
125
+
126
+ true
127
+ end
128
+ private_class_method :include?
129
+
130
+ #
131
+ # 範囲が月より前にあるか
132
+ #
133
+ # @param [Western::Calendar] monthly_start_date 月初日
134
+ # @param [Western::Calendar] start_date 西暦開始日
135
+ # @param [Western::Calendar] last_date 西暦終了日
136
+ #
137
+ # @return [True] 前にある
138
+ # @return [False] 前にない
139
+ #
140
+ def self.under(monthly_start_date:, start_date:, last_date:)
141
+ start_date < monthly_start_date && last_date < monthly_start_date
142
+ end
143
+ private_class_method :under
144
+
145
+ #
146
+ # 範囲が月より後にあるか
147
+ #
148
+ # @param [Western::Calendar] monthly_start_date 月末日
149
+ # @param [Western::Calendar] start_date 西暦開始日
150
+ # @param [Western::Calendar] last_date 西暦終了日
151
+ #
152
+ # @return [True] 後にある
153
+ # @return [False] 後にない
154
+ #
155
+ def self.over(monthly_last_date:, start_date:, last_date:)
156
+ start_date > monthly_last_date && last_date > monthly_last_date
157
+ end
158
+ private_class_method :over
159
+ end
160
+ end
161
+ end
162
+ end
@@ -63,10 +63,10 @@ module Zakuro
63
63
  #
64
64
  # 月を特定する
65
65
  #
66
- # @param [Year] year 年
66
+ # @param [Base::Year] year 年
67
67
  # @param [Western::Calendar] date 西暦日
68
68
  #
69
- # @return [Month] 対象月
69
+ # @return [Base::Month] 対象月
70
70
  #
71
71
  def self.specify_month(year:, date:)
72
72
  months = year.months
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../operation/operation'
4
+
5
+ # :nodoc:
6
+ module Zakuro
7
+ # :nodoc:
8
+ module Calculation
9
+ # :nodoc:
10
+ module Summary
11
+ #
12
+ # Operation 運用情報
13
+ #
14
+ module Operation
15
+ #
16
+ # 運用情報を生成する
17
+ #
18
+ # @param [Result::Data::SingleDay] calc_date 和暦日(計算値)
19
+ #
20
+ # @return [Result::Operation::Bundle] 運用情報
21
+ #
22
+ def self.create(calc_date: Result::Data::SingleDay.new)
23
+ first_day = calc_date.month.first_day.western_date
24
+ operation_history = Zakuro::Operation.specify_history(western_date: first_day)
25
+
26
+ operation_month = create_operation_month(operation_history: operation_history)
27
+
28
+ Result::Operation::Bundle.new(
29
+ operated: !operation_history.invalid?, month: operation_month, original: calc_date
30
+ )
31
+ end
32
+
33
+ #
34
+ # 月履歴集約情報を生成する
35
+ #
36
+ # @param [Operation::MonthHistory] operation_history 変更履歴(月)
37
+ #
38
+ # @return [Result::Operation::Month::Bundle] 月履歴集約情報
39
+ #
40
+ def self.create_operation_month(operation_history: Operation::MonthHistory.new)
41
+ return Result::Operation::Month::Bundle.new if operation_history.invalid?
42
+
43
+ parent_operation_history = Zakuro::Operation.specify_history_by_id(
44
+ id: operation_history.parent_id
45
+ )
46
+
47
+ Result::Operation::Month::Bundle.new(
48
+ current: create_operation_month_history(operation_history: operation_history),
49
+ parent: create_operation_month_history(operation_history: parent_operation_history)
50
+ )
51
+ end
52
+ private_class_method :create_operation_month
53
+
54
+ #
55
+ # 月別履歴情報を生成する
56
+ #
57
+ # @param [Operation::MonthHistory] operation_history 変更履歴(月)
58
+ #
59
+ # @return [Result::Operation::Month::History] 月別履歴情報
60
+ #
61
+ def self.create_operation_month_history(operation_history: Operation::MonthHistory.new)
62
+ return Result::Operation::Month::History.new if operation_history.invalid?
63
+
64
+ annotations = create_annnotations(operation_history: operation_history)
65
+
66
+ reference = operation_history.reference
67
+ Result::Operation::Month::History.new(
68
+ id: operation_history.id, western_date: operation_history.western_date.format,
69
+ page: reference.page, number: reference.number, annotations: annotations
70
+ )
71
+ end
72
+ private_class_method :create_operation_month_history
73
+
74
+ #
75
+ # 注釈情報を生成する
76
+ #
77
+ # @param [Operation::MonthHistory] operation_history 変更履歴(月)
78
+ #
79
+ # @return [Array<Result::Operation::Month::Annotation>] 注釈
80
+ #
81
+ def self.create_annnotations(operation_history: Operation::MonthHistory.new)
82
+ annotations = []
83
+ operation_history.annotations.each do |annotation|
84
+ annotations.push(
85
+ Result::Operation::Month::Annotation.new(
86
+ description: annotation.description,
87
+ note: annotation.note
88
+ )
89
+ )
90
+ end
91
+
92
+ annotations
93
+ end
94
+ private_class_method :create_annnotations
95
+ end
96
+ end
97
+ end
98
+ end