zakuro 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +20 -18
  3. data/VERSION +1 -1
  4. data/doc/condition.md +3 -1
  5. data/doc/dropped_date.md +25 -0
  6. data/doc/expection.md +11 -0
  7. data/doc/operation/csv/month.csv +5 -5
  8. data/doc/operation/operation.xlsx +0 -0
  9. data/doc/vanished_date.md +26 -0
  10. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +26 -0
  11. data/lib/zakuro/calculation/cycle/abstract_solar_term.rb +1 -1
  12. data/lib/zakuro/calculation/era/gengou/abstract_scroll.rb +2 -2
  13. data/lib/zakuro/calculation/era/gengou/dated_scroll.rb +6 -2
  14. data/lib/zakuro/calculation/era/gengou/internal/counter.rb +5 -5
  15. data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb +12 -5
  16. data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb +14 -8
  17. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_list.rb +3 -2
  18. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_range.rb +4 -2
  19. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +5 -3
  20. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_range.rb +10 -5
  21. data/lib/zakuro/calculation/era/gengou/named_scroll.rb +5 -2
  22. data/lib/zakuro/calculation/monthly/initialized_month.rb +4 -2
  23. data/lib/zakuro/calculation/monthly/meta/all_solar_term.rb +64 -0
  24. data/lib/zakuro/calculation/monthly/meta/meta_collector.rb +80 -0
  25. data/lib/zakuro/calculation/monthly/meta.rb +60 -0
  26. data/lib/zakuro/calculation/monthly/month.rb +60 -5
  27. data/lib/zakuro/calculation/monthly/operated_month.rb +6 -3
  28. data/lib/zakuro/calculation/option/dropped_date/location.rb +12 -23
  29. data/lib/zakuro/calculation/option/vanished_date/location.rb +9 -2
  30. data/lib/zakuro/calculation/range/abstract_full_range.rb +19 -2
  31. data/lib/zakuro/calculation/range/abstract_operation_range.rb +20 -2
  32. data/lib/zakuro/calculation/range/dated_full_range.rb +3 -1
  33. data/lib/zakuro/calculation/range/dated_operation_range.rb +3 -1
  34. data/lib/zakuro/calculation/range/medieval_annual_range.rb +1 -1
  35. data/lib/zakuro/calculation/range/named_full_range.rb +3 -1
  36. data/lib/zakuro/calculation/range/named_operation_range.rb +3 -1
  37. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +2 -1
  38. data/lib/zakuro/calculation/range/transfer/year_boundary.rb +10 -8
  39. data/lib/zakuro/calculation/stella/solar/abstract_average.rb +8 -34
  40. data/lib/zakuro/calculation/summary/internal/option.rb +51 -25
  41. data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +1 -1
  42. data/lib/zakuro/era/japan/calendar.rb +2 -2
  43. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +1 -1
  44. data/lib/zakuro/era/japan/gengou/alignment.rb +14 -2
  45. data/lib/zakuro/era/japan/gengou/resource/parser.rb +83 -25
  46. data/lib/zakuro/era/japan/gengou/resource/type.rb +81 -26
  47. data/lib/zakuro/era/japan/gengou/resource/validator.rb +102 -23
  48. data/lib/zakuro/era/japan/gengou/resource/yaml/set-001-until-south.yaml +1123 -375
  49. data/lib/zakuro/era/japan/gengou/resource/yaml/set-002-from-north.yaml +487 -163
  50. data/lib/zakuro/era/japan/gengou/resource/yaml/set-003-modern.yaml +30 -10
  51. data/lib/zakuro/era/japan/gengou/resource.rb +16 -0
  52. data/lib/zakuro/era/japan/gengou.rb +7 -4
  53. data/lib/zakuro/era/western/calendar.rb +5 -11
  54. data/lib/zakuro/era/western/date_text.rb +40 -0
  55. data/lib/zakuro/gateway/locale/date.rb +2 -2
  56. data/lib/zakuro/operation/month/validator.rb +7 -1
  57. data/lib/zakuro/operation/yaml/month.yaml +15 -15
  58. data/lib/zakuro/output/logger.rb +21 -3
  59. data/lib/zakuro/tools/remainder_comparer.rb +97 -0
  60. metadata +7 -2
@@ -1,5 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../monthly/meta/meta_collector'
4
+
5
+ require_relative '../../../tools/remainder_comparer'
6
+
3
7
  # :nodoc:
4
8
  module Zakuro
5
9
  # :nodoc:
@@ -42,36 +46,6 @@ module Zakuro
42
46
  annual_range
43
47
  end
44
48
 
45
- # :reek:TooManyStatements { max_statements: 7 }
46
-
47
- class << self
48
- #
49
- # 月内(当月朔日から当月末日(来月朔日の前日)の間)に二十四節気があるか
50
- # @note 大余60で一巡するため 以下2パターンがある
51
- # * current_month <= next_month : (二十四節気) >= current_month && (二十四節気) < next_month
52
- # * current_month > next_month : (二十四節気) >= current_month || (二十四節気) < next_month
53
- #
54
- # @param [Cycle::AbstractRemainder] solar_term 二十四節気
55
- # @param [Cycle::AbstractRemainder] current_month 月初
56
- # @param [Cycle::AbstractRemainder] next_month 月末
57
- #
58
- # @return [True] 対象の二十四節気がある
59
- # @return [False] 対象の二十四節気がない
60
- #
61
- def in_solar_term?(solar_term:, current_month:, next_month:)
62
- # 大余で比較する
63
- target_time = solar_term.day
64
- current_month_time = current_month.day
65
- next_month_time = next_month.day
66
- current_month_over = (target_time >= current_month_time)
67
- next_month_under = (target_time < next_month_time)
68
-
69
- return current_month_over && next_month_under if current_month_time <= next_month_time
70
-
71
- current_month_over || next_month_under
72
- end
73
- end
74
-
75
49
  private
76
50
 
77
51
  # :reek:TooManyStatements { max_statements: 8 }
@@ -87,10 +61,10 @@ module Zakuro
87
61
  # * 最大試行回数:4回(設定なし => 設定あり => 設定あり => 設定なし)
88
62
  # * 閏月は1回しか設定しない
89
63
  # * 最大2回設定する(中気・節気)
90
- (0..3).each do |_index|
91
- in_range = self.class.in_solar_term?(
92
- solar_term: solar_term.remainder, current_month: current_month.remainder,
93
- next_month: next_month.remainder
64
+ 4.times.each do |_index|
65
+ in_range = Tools::RemainderComparer.in_range?(
66
+ target: solar_term.remainder, start: current_month.remainder,
67
+ last: next_month.remainder
94
68
  )
95
69
 
96
70
  # 範囲外
@@ -34,17 +34,32 @@ module Zakuro
34
34
  context = month.context
35
35
 
36
36
  if context.option.dropped_date?
37
+ solar_term = month.solar_term_by_day(day: day.remainder.day)
38
+
37
39
  remainder = day.remainder
38
- solar_terms = month.solar_terms
39
40
  option = dropped_date(
40
- context: context, remainder: remainder, solar_terms: solar_terms
41
+ context: context, remainder: remainder, solar_term: solar_term
41
42
  )
42
43
  options[Context::Option::DROPPED_DATE_KEY] = option
43
44
  end
44
45
 
46
+ # TODO: refactor
45
47
  if context.option.vanished_date?
46
48
  remainder = day.remainder
47
49
  average_remainder = month.first_day.average_remainder
50
+ # p "remainder: #{remainder.format}"
51
+ # p "last_average_remainder: #{month.meta.last_average_remainder.format}"
52
+
53
+ if day.number == 1
54
+ option = vanished_date(
55
+ context: context, remainder: remainder,
56
+ average_remainder: month.meta.last_average_remainder
57
+ )
58
+ options[Context::Option::VANISHED_DATE_KEY] = option
59
+
60
+ return options if option.matched
61
+ end
62
+
48
63
  option = vanished_date(
49
64
  context: context, remainder: remainder, average_remainder: average_remainder
50
65
  )
@@ -61,40 +76,43 @@ module Zakuro
61
76
  #
62
77
  # @param [Context::Context] context 暦コンテキスト
63
78
  # @param [Cycle::AbstractRemainder] remainder 当日和暦日
64
- # @param [Array<Cycle::AbstractSolarTerm>] solar_terms 二十四節気
79
+ # @param [Cycle::AbstractSolarTerm] solar_terms 二十四節気
65
80
  #
66
81
  # @return [Result::Data::Option::DroppedDate::Option] 没日
67
82
  #
68
- def dropped_date(context:, remainder:, solar_terms:)
83
+ def dropped_date(context:, remainder:, solar_term:)
69
84
  option = Result::Data::Option::DroppedDate::Option.new
70
85
 
71
86
  return option if remainder.invalid?
72
87
 
73
88
  location = Calculation::Option::DroppedDate::Location.new(
74
- context: context, solar_terms: solar_terms
89
+ context: context, solar_term: solar_term
75
90
  )
76
91
 
92
+ return option if location.invalid?
93
+
77
94
  return option unless location.exist?
78
95
 
79
96
  dropped_date = location.get
80
97
 
81
- return option unless remainder.day == dropped_date.day
82
-
83
- dropped_date_option(location: location)
98
+ dropped_date_option(
99
+ matched: remainder.day == dropped_date.day, location: location
100
+ )
84
101
  end
85
102
 
86
103
  #
87
104
  # 没日オプション値を生成する
88
105
  #
106
+ # @param [True, False] matched 没日有無
89
107
  # @param [Calculation::Option::DroppedDate::Location] location 没日位置
90
108
  #
91
109
  # @return [Result::Data::Option::DroppedDate::Option] 没日オプション値
92
110
  #
93
- def dropped_date_option(location:)
111
+ def dropped_date_option(matched:, location:)
94
112
  dropped_date = location.get
95
113
  solar_term = location.solar_term
96
114
  Result::Data::Option::DroppedDate::Option.new(
97
- matched: true,
115
+ matched: matched,
98
116
  calculation: Result::Data::Option::DroppedDate::Calculation.new(
99
117
  remainder: dropped_date.format,
100
118
  solar_term: Result::Data::SolarTerm.new(
@@ -108,41 +126,49 @@ module Zakuro
108
126
  #
109
127
  # 滅日を求める
110
128
  #
111
- # @param [<Type>] context <description>
112
- # @param [<Type>] remainder <description>
113
- # @param [<Type>] average_remainder <description>
129
+ # @param [Context::Context] context 暦コンテキスト
130
+ # @param [Cycle::AbstractRemainder] remainder 当日和暦日
131
+ # @param [Cycle::AbstractRemainder] average_remainder 経朔
114
132
  #
115
- # @return [<Type>] <description>
133
+ # @return [Result::Data::Option::VanishedDate::Option] 滅日オプション値
116
134
  #
117
135
  def vanished_date(context:, remainder:, average_remainder:)
118
- option = Result::Data::Option::VanishedDate::Option.new
119
-
120
- return option if average_remainder.invalid?
136
+ return Result::Data::Option::VanishedDate::Option.new if average_remainder.invalid?
121
137
 
122
138
  location = Calculation::Option::VanishedDate::Location.new(
123
139
  context: context, average_remainder: average_remainder
124
140
  )
125
141
 
126
- return option unless location.exist?
142
+ return Result::Data::Option::VanishedDate::Option.new if location.invalid?
127
143
 
128
- vanished_date = location.get
144
+ unless location.exist?
145
+ # 結果確認のため経朔だけは設定する
146
+ return Result::Data::Option::VanishedDate::Option.new(
147
+ calculation: Result::Data::Option::VanishedDate::Calculation.new(
148
+ average_remainder: average_remainder
149
+ )
150
+ )
151
+ end
129
152
 
130
- return option unless remainder.day == vanished_date.day
153
+ vanished_date = location.get
131
154
 
132
- vanished_date_option(location: location)
155
+ vanished_date_option(
156
+ matched: remainder.day == vanished_date.day, location: location
157
+ )
133
158
  end
134
159
 
135
160
  #
136
161
  # 滅日オプション値を生成する
137
162
  #
138
- # @param [Calculation::Option::DroppedDate::Location] location 滅日位置
163
+ # @param [True, False] matched 滅日有無
164
+ # @param [Calculation::Option::VanishedDate::Location] location 滅日位置
139
165
  #
140
- # @return [Result::Data::Option::DroppedDate::Option] 滅日オプション値
166
+ # @return [Result::Data::Option::VanishedDate::Option] 滅日オプション値
141
167
  #
142
- def vanished_date_option(location:)
168
+ def vanished_date_option(matched:, location:)
143
169
  vanished_date = location.get
144
170
  Result::Data::Option::VanishedDate::Option.new(
145
- matched: true,
171
+ matched: matched,
146
172
  calculation: Result::Data::Option::VanishedDate::Calculation.new(
147
173
  remainder: vanished_date.format,
148
174
  average_remainder: location.average_remainder
@@ -30,7 +30,7 @@ module Zakuro
30
30
  #
31
31
  # 取得する
32
32
  #
33
- # @param [Array<Calculation::Base::Year>] years 範囲
33
+ # @param [Array<Base::Year>] years 範囲
34
34
  # @param [Western::Calendar] date 西暦日
35
35
  #
36
36
  # @return [Result::Data::SingleDay] 和暦日
@@ -98,7 +98,7 @@ module Zakuro
98
98
  # @return [Calendar] 年月日情報(和暦)
99
99
  #
100
100
  def parse(regex: FORMAT, text: '')
101
- return Calendar.new unless valid_date_string(regex: regex, text: text)
101
+ return Calendar.new unless valid_date_text(regex: regex, text: text)
102
102
 
103
103
  matched = text.match(regex)
104
104
 
@@ -120,7 +120,7 @@ module Zakuro
120
120
  # @return [True] 正しい
121
121
  # @return [True] 正しくない
122
122
  #
123
- def valid_date_string(regex: FORMAT, text: '')
123
+ def valid_date_text(regex: FORMAT, text: '')
124
124
  return false unless text
125
125
 
126
126
  matched = text.match(regex)
@@ -175,7 +175,7 @@ module Zakuro
175
175
  # @return [Western::Calendar]設定された元号の開始日
176
176
  #
177
177
  def native_start_date
178
- gengou.both_start_date.western
178
+ gengou.start_date.western
179
179
  end
180
180
 
181
181
  #
@@ -23,6 +23,9 @@ module Zakuro
23
23
  # @return [Aligner] 整列結果
24
24
  SUMMARY = Aligner.new(resources: Resource::LIST)
25
25
 
26
+ # @return [Aligner] 整列結果(運用値)
27
+ OPERATED_SUMMARY = Aligner.new(resources: Resource::OPERATED_LIST)
28
+
26
29
  class << self
27
30
  #
28
31
  # 指定した範囲内の元号を取得する
@@ -30,11 +33,17 @@ module Zakuro
30
33
  # @param [Integer] line 行
31
34
  # @param [Western::Calendar] start_date 開始日
32
35
  # @param [Western::Calendar] last_date 終了日
36
+ # @param [True, False] operated 運用値設定
33
37
  #
34
38
  # @return [Array<LinearGengou>] 元号
35
39
  #
36
40
  def get(line: FIRST_LINE,
37
- start_date: Western::Calendar.new, last_date: Western::Calendar.new)
41
+ start_date: Western::Calendar.new, last_date: Western::Calendar.new,
42
+ operated: false)
43
+
44
+ if operated
45
+ return OPERATED_SUMMARY.get(line: line, start_date: start_date, last_date: last_date)
46
+ end
38
47
 
39
48
  SUMMARY.get(line: line, start_date: start_date, last_date: last_date)
40
49
  end
@@ -44,10 +53,13 @@ module Zakuro
44
53
  #
45
54
  # @param [Integer] line 行
46
55
  # @param [String] name 元号名
56
+ # @param [True, False] operated 運用値設定
47
57
  #
48
58
  # @return [Array<LinearGengou>] 元号
49
59
  #
50
- def get_by_name(line: FIRST_LINE, name:)
60
+ def get_by_name(line: FIRST_LINE, name:, operated: false)
61
+ return OPERATED_SUMMARY.get_by_name(line: line, name: name) if operated
62
+
51
63
  SUMMARY.get_by_name(line: line, name: name)
52
64
  end
53
65
  end
@@ -30,9 +30,11 @@ module Zakuro
30
30
  # @return [String] 元号名
31
31
  attr_reader :name
32
32
  # @return [Hash<String, String>] 開始年
33
- attr_reader :both_start_year
33
+ attr_reader :start_year
34
34
  # @return [Hash<String, String>] 開始日
35
- attr_reader :both_start_date
35
+ attr_reader :start_date
36
+ # @return [True, False] 運用値
37
+ attr_reader :operated
36
38
 
37
39
  #
38
40
  # 初期化
@@ -40,11 +42,12 @@ module Zakuro
40
42
  # @param [Hash<String, Strin>] hash 元号情報
41
43
  # @param [Integer] index (元号セット内での)元号の要素位置
42
44
  #
43
- def initialize(hash:, index:)
45
+ def initialize(hash:, index:, operated: false)
44
46
  @index = index
45
47
  @name = hash['name']
46
- @both_start_year = hash['start_year']
47
- @both_start_date = hash['start_date']
48
+ @start_year = hash['start_year']
49
+ @start_date = hash['start_date']
50
+ @operated = operated
48
51
  end
49
52
 
50
53
  #
@@ -53,11 +56,11 @@ module Zakuro
53
56
  # @return [Gengou] 元号情報
54
57
  #
55
58
  def create
56
- start_year = Both::YearParser.new(hash: both_start_year).create
57
- start_date = Both::DateParser.new(hash: both_start_date).create
59
+ year = Both::YearParser.new(hash: start_year).create
60
+ date = SwitchDateParser.new(hash: start_date, operated: operated).create
58
61
 
59
- Gengou.new(name: name, both_start_year: start_year,
60
- both_start_date: start_date)
62
+ Gengou.new(name: name, start_year: year,
63
+ start_date: date)
61
64
  end
62
65
  end
63
66
 
@@ -70,23 +73,27 @@ module Zakuro
70
73
  # @return [String] 元号セット名
71
74
  attr_reader :name
72
75
  # @return [Hash<String, String>] 終了年
73
- attr_reader :both_last_year
76
+ attr_reader :last_year
74
77
  # @return [Hash<String, String>] 終了日
75
- attr_reader :both_last_date
78
+ attr_reader :last_date
76
79
  # @return [Array<Hash<String, String>>] 元号情報
77
80
  attr_reader :list
81
+ # @return [True, False] 運用値
82
+ attr_reader :operated
78
83
 
79
84
  #
80
85
  # 初期化
81
86
  #
82
87
  # @param [Hash<String, Object>] hash 元号セット情報
88
+ # @param [True, False] operated 運用値設定
83
89
  #
84
- def initialize(hash:)
90
+ def initialize(hash:, operated: false)
85
91
  @id = hash['id']
86
92
  @name = hash['name']
87
- @both_last_year = hash['last_year']
88
- @both_last_date = hash['last_date']
93
+ @last_year = hash['last_year']
94
+ @last_date = hash['last_date']
89
95
  @list = hash['list']
96
+ @operated = operated
90
97
  end
91
98
 
92
99
  #
@@ -95,10 +102,10 @@ module Zakuro
95
102
  # @return [Set] 元号セット情報
96
103
  #
97
104
  def create
98
- last_date = Both::DateParser.new(hash: both_last_date).create
105
+ date = SwitchDateParser.new(hash: last_date, operated: operated).create
99
106
  list = create_list
100
107
  Set.new(
101
- id: id, name: name, both_last_date: last_date, list: list
108
+ id: id, name: name, last_date: date, list: list
102
109
  )
103
110
  end
104
111
 
@@ -112,7 +119,9 @@ module Zakuro
112
119
  def create_list
113
120
  result = []
114
121
  list.each_with_index do |li, index|
115
- gengou = GengouParser.new(hash: li, index: index).create
122
+ gengou = GengouParser.new(
123
+ hash: li, index: index, operated: operated
124
+ ).create
116
125
  next_index = index + 1
117
126
  gengou = calc_last_date_on_gengou_data(next_index: next_index,
118
127
  gengou: gengou)
@@ -136,11 +145,15 @@ module Zakuro
136
145
  return gengou
137
146
  end
138
147
  next_item = list[next_index]
148
+ next_start_date = SwitchDateParser.new(
149
+ hash: next_item['start_date'], operated: operated
150
+ ).create
151
+
139
152
  gengou.convert_next_start_year_to_last_year(
140
153
  next_start_year: next_item['start_year']['western']
141
154
  )
142
155
  gengou.convert_next_start_date_to_last_date(
143
- next_start_date: next_item['start_date']['western']
156
+ next_start_date: next_start_date.western
144
157
  )
145
158
  gengou
146
159
  end
@@ -153,9 +166,50 @@ module Zakuro
153
166
  # @param [GengouParser] gengou 元号
154
167
  #
155
168
  def last_gengou_data(gengou:)
156
- gengou.write_last_year(last_year: both_last_year['western'])
157
- last_date = Western::Calendar.parse(text: both_last_date['western'])
158
- gengou.write_last_date(last_date: last_date)
169
+ gengou.write_last_year(last_year: last_year['western'])
170
+
171
+ date = SwitchDateParser.new(hash: last_date, operated: operated).create
172
+
173
+ gengou.write_last_date(last_date: date.western)
174
+ end
175
+ end
176
+
177
+ #
178
+ # SwitchDateParser 切替日(運用/計算)
179
+ #
180
+ class SwitchDateParser
181
+ # @return [Hash<String, Strin>] 計算値
182
+ attr_reader :calculation
183
+ # @return [Hash<String, Strin>] 運用値
184
+ attr_reader :operation
185
+ # @return [True, False] 運用値
186
+ attr_reader :operated
187
+
188
+ #
189
+ # 初期化
190
+ #
191
+ # @param [Hash<String, Strin>] hash 切替日(運用/計算)
192
+ # @param [True, False] operated 運用値設定
193
+ #
194
+ def initialize(hash:, operated: false)
195
+ @calculation = hash['calculation']
196
+ @operation = hash['operation']
197
+ @operated = operated
198
+ end
199
+
200
+ #
201
+ # 切替日(運用/計算)情報を生成する
202
+ #
203
+ # @return [SwitchDate] 切替日(運用/計算)情報
204
+ #
205
+ def create
206
+ calculation_date = Both::DateParser.new(hash: calculation).create
207
+ operation_date = Both::DateParser.new(hash: operation).create
208
+
209
+ Japan::Gengou::Resource::SwitchDate.new(
210
+ calculation: calculation_date, operation: operation_date,
211
+ operated: operated
212
+ )
159
213
  end
160
214
  end
161
215
 
@@ -222,8 +276,11 @@ module Zakuro
222
276
  # @return [Both::Date] 日情報
223
277
  #
224
278
  def create
225
- japan_date = Japan::Calendar.parse(text: japan)
226
- western_date = Western::Calendar.parse(text: western)
279
+ japan_date = Japan::Calendar.new
280
+ western_date = Western::Calendar.new
281
+
282
+ japan_date = Japan::Calendar.parse(text: japan) unless japan == ''
283
+ western_date = Western::Calendar.parse(text: western) unless western == ''
227
284
 
228
285
  Japan::Gengou::Resource::Both::Date.new(
229
286
  japan: japan_date, western: western_date
@@ -237,19 +294,20 @@ module Zakuro
237
294
  # 解析/展開する
238
295
  #
239
296
  # @param [String] filepath 元号セットファイルパス
297
+ # @param [True, False] operated 運用値設定
240
298
  #
241
299
  # @return [Set] 元号セット情報
242
300
  #
243
301
  # @raise [ArgumentError] 引数エラー
244
302
  #
245
- def run(filepath: '')
303
+ def run(filepath: '', operated: false)
246
304
  yaml = YAML.load_file(filepath)
247
305
 
248
306
  failed = Validator.run(yaml_hash: yaml)
249
307
 
250
308
  raise ArgumentError, failed.join("\n") unless failed.empty?
251
309
 
252
- parser = SetParser.new(hash: yaml)
310
+ parser = SetParser.new(hash: yaml, operated: operated)
253
311
  parser.create
254
312
  end
255
313
  end