eco-helpers 2.7.2 → 2.7.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -3
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api/common/loaders/base.rb +4 -3
- data/lib/eco/api/common/loaders/config/workflow/mailer.rb +2 -2
- data/lib/eco/api/common/loaders/parser.rb +1 -0
- data/lib/eco/api/common/people/default_parsers/csv_parser.rb +47 -33
- data/lib/eco/api/common/people/default_parsers/login_providers_parser.rb +1 -1
- data/lib/eco/api/common/people/default_parsers/xls_parser.rb +8 -2
- data/lib/eco/api/common/people/default_parsers.rb +0 -11
- data/lib/eco/api/common/people/person_attribute_parser.rb +2 -1
- data/lib/eco/api/common/people/person_entry.rb +4 -2
- data/lib/eco/api/session/batch/errors.rb +43 -44
- data/lib/eco/api/session.rb +9 -2
- data/lib/eco/api/usecases/default/locations/csv_to_tree_case.rb +1 -1
- data/lib/eco/api/usecases/default/people/set_default_tag_case.rb +2 -2
- data/lib/eco/api/usecases/default/people/supers_cyclic_identify_case.rb +15 -17
- data/lib/eco/api/usecases/default/people/switch_supervisor_case.rb +26 -20
- data/lib/eco/api/usecases/default/people/transfer_account_case.rb +86 -70
- data/lib/eco/api/usecases/default_cases/hris_case.rb +1 -1
- data/lib/eco/api/usecases/default_cases/to_csv_case.rb +7 -7
- data/lib/eco/api/usecases/graphql/helpers/location/command.rb +1 -1
- data/lib/eco/api/usecases/graphql/samples/location/command/service/tree_update.rb +73 -65
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_diff.rb +7 -1
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_to_list/output.rb +1 -0
- data/lib/eco/api/usecases/graphql/samples/location/service/tree_to_list.rb +1 -0
- data/lib/eco/api/usecases/ooze_cases/export_register_case.rb +1 -1
- data/lib/eco/api/usecases/ooze_samples/ooze_base_case.rb +13 -9
- data/lib/eco/api/usecases/ooze_samples/ooze_run_base_case.rb +4 -4
- data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +9 -6
- data/lib/eco/api/usecases/ooze_samples/register_migration_case.rb +5 -5
- data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +7 -5
- data/lib/eco/api/usecases/ooze_samples/target_oozes_update_case.rb +2 -2
- data/lib/eco/api/usecases.rb +19 -13
- data/lib/eco/cli/scripting/args_helpers.rb +2 -0
- data/lib/eco/data/files/helpers.rb +25 -12
- data/lib/eco/data/hashes/sanke_camel_indifferent_access.rb +0 -5
- data/lib/eco/language/models/parser_serializer.rb +4 -2
- data/lib/eco/version.rb +1 -1
- metadata +3 -3
@@ -92,7 +92,7 @@ class Eco::API::UseCases::OozeCases::ExportRegisterCase < Eco::API::UseCases::Oo
|
|
92
92
|
def filename
|
93
93
|
@filename ||= (options[:file] || options.dig(:export, :file, :name)).tap do |filename|
|
94
94
|
unless filename
|
95
|
-
|
95
|
+
log(:error) { "Destination file not specified" }
|
96
96
|
return false
|
97
97
|
end
|
98
98
|
end
|
@@ -114,7 +114,7 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
114
114
|
apiv2.pages.get(ooze_id, stage_id: stage_id).tap do |ooze|
|
115
115
|
if ooze
|
116
116
|
new_target(ooze)
|
117
|
-
|
117
|
+
log(:info) { "Got #{object_reference(ooze)}" }
|
118
118
|
else
|
119
119
|
exit_error "Could not get ooze '#{ooze_id}'"
|
120
120
|
end
|
@@ -134,7 +134,9 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
134
134
|
return apiv2.pages.get(ooze_id, stage_id: stg.id).tap do |stage|
|
135
135
|
if stage
|
136
136
|
new_target(stage)
|
137
|
-
|
137
|
+
log(:info) {
|
138
|
+
"Got #{object_reference(stage)} from #{object_reference(ooze)}"
|
139
|
+
}
|
138
140
|
else
|
139
141
|
exit_error "Could not get stage '#{id_name}' in ooze '#{ooze_id}'"
|
140
142
|
end
|
@@ -159,9 +161,11 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
159
161
|
apiv2.pages.update(ooze).tap do |response|
|
160
162
|
if response.success?
|
161
163
|
ooze.consolidate!
|
162
|
-
|
164
|
+
log(:info) { "Successful update of #{object_reference(ooze)}" }
|
163
165
|
else
|
164
|
-
|
166
|
+
log(:error) {
|
167
|
+
"Could not update #{object_reference(ooze)} (created_at: #{ooze.created_at}: #{response.body}"
|
168
|
+
}
|
165
169
|
end
|
166
170
|
end
|
167
171
|
end
|
@@ -172,7 +176,7 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
172
176
|
if warn_pending_changes
|
173
177
|
msg = "You you are switching to a new target #{object_reference(object)}"
|
174
178
|
msg += " after doing unsaved changes to #{object_reference(target)}"
|
175
|
-
|
179
|
+
log(:warn) { msg }
|
176
180
|
end
|
177
181
|
yield(target) if block_given?
|
178
182
|
end
|
@@ -185,7 +189,7 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
185
189
|
|
186
190
|
def backup_patch!(ooze = target)
|
187
191
|
unless (patch = (patch_doc(ooze) || {})["page"])
|
188
|
-
|
192
|
+
log(:info) { "No changes to update for #{object_reference(ooze)}." }
|
189
193
|
return
|
190
194
|
end
|
191
195
|
|
@@ -216,12 +220,12 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
216
220
|
|
217
221
|
def dry_run_feedback(entry = target)
|
218
222
|
entry.validate.tap do |validation|
|
219
|
-
|
223
|
+
log(:error) { validation } if validation.is_a?(String)
|
220
224
|
end
|
221
225
|
display_patch(entry)
|
222
226
|
backup_patch!(entry)
|
223
227
|
if dirty?(entry) && dry_count > self.class::DRY_COUNT
|
224
|
-
|
228
|
+
log(:info) { "Reached #{self.class::DRY_COUNT} dry-run samples." }
|
225
229
|
exit(0)
|
226
230
|
end
|
227
231
|
false
|
@@ -232,7 +236,7 @@ class Eco::API::UseCases::OozeSamples::OozeBaseCase < Eco::API::Common::Loaders:
|
|
232
236
|
end
|
233
237
|
|
234
238
|
def exit_error(msg)
|
235
|
-
|
239
|
+
log(:error) { msg }
|
236
240
|
exit(1)
|
237
241
|
end
|
238
242
|
end
|
@@ -47,10 +47,10 @@ class Eco::API::UseCases::OozeSamples::OozeRunBaseCase < Eco::API::UseCases::Ooz
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def exit_if_no_changes!
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
return if (changes = !!patch_doc["page"])
|
51
|
+
|
52
|
+
log(:info) { "No Changes!!" }
|
53
|
+
exit(0)
|
54
54
|
end
|
55
55
|
|
56
56
|
def prompt_to_confirm!
|
@@ -111,7 +111,7 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
|
|
111
111
|
apiv2.pages.get(ooze_id, stage_id: stage_id).tap do |ooze|
|
112
112
|
if ooze
|
113
113
|
new_target(ooze)
|
114
|
-
|
114
|
+
log(:info) { "Got #{object_reference(ooze)}" }
|
115
115
|
else
|
116
116
|
exit_error "Could not get ooze '#{ooze_id}'"
|
117
117
|
end
|
@@ -125,12 +125,15 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
|
|
125
125
|
exit_error "There's no target ooze to get retrieve stages from"
|
126
126
|
end
|
127
127
|
|
128
|
-
|
128
|
+
stg = ooze.stages[id_name] || ooze.stages.get_by_name(id_name)
|
129
|
+
if stg
|
129
130
|
return ooze if ooze.respond_to?(:current_stage_id) && (ooze.current_stage_id == stg.id)
|
130
131
|
return apiv2.pages.get(ooze_id, stage_id: stg.id).tap do |stage|
|
131
132
|
if stage
|
132
133
|
new_target(stage)
|
133
|
-
|
134
|
+
log(:info) {
|
135
|
+
"Got #{object_reference(stage)} from #{object_reference(ooze)}"
|
136
|
+
}
|
134
137
|
else
|
135
138
|
exit_error "Could not get stage '#{id_name}' in ooze '#{ooze_id}'"
|
136
139
|
end
|
@@ -154,7 +157,7 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
|
|
154
157
|
) do |res|
|
155
158
|
next if res.upcase.start_with?("Y")
|
156
159
|
puts "..."
|
157
|
-
|
160
|
+
log(:info) { "Aborting script..." }
|
158
161
|
exit(0)
|
159
162
|
end
|
160
163
|
end
|
@@ -175,7 +178,7 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
|
|
175
178
|
end
|
176
179
|
|
177
180
|
def conf_search
|
178
|
-
|
181
|
+
search if respond_to?(:search)
|
179
182
|
end
|
180
183
|
|
181
184
|
def register_id
|
@@ -187,7 +190,7 @@ class Eco::API::UseCases::OozeSamples::RegisterExportCase < Eco::API::Common::Lo
|
|
187
190
|
end
|
188
191
|
|
189
192
|
def exit_error(msg)
|
190
|
-
|
193
|
+
log(:error) { msg }
|
191
194
|
exit(1)
|
192
195
|
end
|
193
196
|
end
|
@@ -52,7 +52,7 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
|
|
52
52
|
csv << ["src_page_id", "dst_page_id"]
|
53
53
|
super(session, options, usecase, &block)
|
54
54
|
end
|
55
|
-
|
55
|
+
log(:info) { "File '#{out_csv_filename}' has been created." }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -79,15 +79,15 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
|
|
79
79
|
end
|
80
80
|
|
81
81
|
if msg = pairing_tracking.report_src_unpaired(only_present: !self.class::REPORT_SRC_EMTPY, only_indexed: !self.class::REPORT_SRC_DEINDEX)
|
82
|
-
|
82
|
+
log(:warn) { msg }
|
83
83
|
end
|
84
84
|
|
85
85
|
if msg = pairing_tracking.report_multi_pairs(only_present: !self.class::REPORT_SRC_EMTPY, only_indexed: !self.class::REPORT_SRC_DEINDEX, dst_exclude_ximport: !self.class::REPORT_DST_XIMPORT)
|
86
|
-
|
86
|
+
log(:warn) { msg }
|
87
87
|
end
|
88
88
|
|
89
89
|
if msg = pairing_tracking.report_dst_unpaired(only_required: false, exclude_ximport: !self.class::REPORT_DST_XIMPORT)
|
90
|
-
|
90
|
+
log(:warn) { msg }
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
@@ -150,7 +150,7 @@ class Eco::API::UseCases::OozeSamples::RegisterMigrationCase < Eco::API::UseCase
|
|
150
150
|
if stg = target_stage(name)
|
151
151
|
yield(stg)
|
152
152
|
else
|
153
|
-
|
153
|
+
log(:warn) { "Entry '#{target.id}' does not have stage '#{name}'" }
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
@@ -80,7 +80,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
80
80
|
if (pending = queue_shift(page_result.id)) && dirty?(pending)
|
81
81
|
msg = "Inconsistent search results. "
|
82
82
|
msg << "Launching update on '#{object_reference(pending)}' to be able to queue it back"
|
83
|
-
|
83
|
+
log(:warn) { msg }
|
84
84
|
update_ooze(pending)
|
85
85
|
end
|
86
86
|
if (ooz = ooze(page_result.id))
|
@@ -88,7 +88,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
88
88
|
yield(ooz)
|
89
89
|
else
|
90
90
|
@non_retrieved_oozes += 1
|
91
|
-
|
91
|
+
log(:warn) { "Could not get page #{page_result.id}" }
|
92
92
|
end
|
93
93
|
end
|
94
94
|
update_oozes
|
@@ -106,7 +106,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
106
106
|
msg << "trying to queue different objects with same page id:\n"
|
107
107
|
msg << " • already queued (changes will go): #{object_reference(elem)}\n"
|
108
108
|
msg << " • tried to queue (lost changes): #{object_reference(object)}"
|
109
|
-
|
109
|
+
log(:warn) { msg }
|
110
110
|
end
|
111
111
|
else
|
112
112
|
batch_queue << object unless batch_queue.include?(object)
|
@@ -180,7 +180,9 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
180
180
|
|
181
181
|
def backup_patch!(ooze = target)
|
182
182
|
return if (patch_doc(ooze) || {})["page"]
|
183
|
-
|
183
|
+
log(:info) {
|
184
|
+
"No changes to update for #{object_reference(ooze)}."
|
185
|
+
}
|
184
186
|
end
|
185
187
|
|
186
188
|
def results_preview
|
@@ -196,7 +198,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
196
198
|
) do |res|
|
197
199
|
next if res.upcase.start_with?("Y")
|
198
200
|
puts "..."
|
199
|
-
|
201
|
+
log(:info) { "Aborting script..." }
|
200
202
|
exit(0)
|
201
203
|
end
|
202
204
|
end
|
@@ -21,7 +21,7 @@ class Eco::API::UseCases::OozeSamples::TargetOozesUpdateCase < Eco::API::UseCase
|
|
21
21
|
yield(ooz)
|
22
22
|
else
|
23
23
|
@non_retrieved_oozes += 1
|
24
|
-
|
24
|
+
log(:warn) { "Could not get page #{id}" }
|
25
25
|
end
|
26
26
|
end
|
27
27
|
update_oozes
|
@@ -53,7 +53,7 @@ class Eco::API::UseCases::OozeSamples::TargetOozesUpdateCase < Eco::API::UseCase
|
|
53
53
|
session.prompt_user("Do you want to proceed (y/N):", explanation: msg, default: "N", timeout: 10) do |res|
|
54
54
|
unless res.upcase.start_with?("Y")
|
55
55
|
puts "..."
|
56
|
-
|
56
|
+
log(:info) { "Aborting script..." }
|
57
57
|
exit(0)
|
58
58
|
end
|
59
59
|
end
|
data/lib/eco/api/usecases.rb
CHANGED
@@ -17,7 +17,6 @@ module Eco
|
|
17
17
|
msg += ". Case name '#{case_name}'" if case_name
|
18
18
|
super(msg)
|
19
19
|
end
|
20
|
-
|
21
20
|
end
|
22
21
|
|
23
22
|
extend Eco::API::Common::ClassAutoLoader
|
@@ -26,7 +25,7 @@ module Eco
|
|
26
25
|
autoloads_children_of "Eco::API::Common::Loaders::UseCase"
|
27
26
|
autoload_namespace_ignore "Eco::API"
|
28
27
|
|
29
|
-
def initialize
|
28
|
+
def initialize
|
30
29
|
@usecases = {}
|
31
30
|
@cache_init = false
|
32
31
|
@cases_by_name = {}
|
@@ -38,7 +37,7 @@ module Eco
|
|
38
37
|
end
|
39
38
|
|
40
39
|
def empty?
|
41
|
-
count
|
40
|
+
count.zero?
|
42
41
|
end
|
43
42
|
|
44
43
|
def each(&block)
|
@@ -69,10 +68,12 @@ module Eco
|
|
69
68
|
# Adds `usecase` to the _Collection_. Before it tries to auto-load pending classes of `auto_loaded_class`.
|
70
69
|
# @param usecase [Eco::API::UseCases::UseCase] the usecase to be added.
|
71
70
|
def add(usecase)
|
72
|
-
|
71
|
+
msg = "Expected Eco::API::UseCases::UseCase object. Given: #{usecase.class}"
|
72
|
+
raise ArgumentError, msg if !usecase || !usecase.is_a?(Eco::API::UseCases::UseCase)
|
73
|
+
|
73
74
|
name = usecase.name
|
74
75
|
type = usecase.type
|
75
|
-
puts "Warning: overriding '#{type
|
76
|
+
puts "Warning: overriding '#{type}' case #{name}" if self.defined?(name, type: type)
|
76
77
|
to_h[key(name, type)] = usecase
|
77
78
|
@cache_init = false
|
78
79
|
usecase
|
@@ -88,8 +89,10 @@ module Eco
|
|
88
89
|
# @param cases [Eco::API::UseCases] the source set of cases to be merged.
|
89
90
|
# @return [Eco::API::UseCases] `self`.
|
90
91
|
def merge(cases)
|
91
|
-
return self
|
92
|
-
|
92
|
+
return self unless cases
|
93
|
+
|
94
|
+
msg = "Expected a Eco::API::UseCases object. Given #{cases.class}"
|
95
|
+
raise msg unless cases.is_a?(Eco::API::UseCases)
|
93
96
|
|
94
97
|
to_h.merge!(cases.to_h).transform_values do |usecase|
|
95
98
|
usecase.root = self
|
@@ -104,18 +107,20 @@ module Eco
|
|
104
107
|
end
|
105
108
|
|
106
109
|
def types(name)
|
107
|
-
return nil
|
108
|
-
|
110
|
+
return nil unless name?(name)
|
111
|
+
|
112
|
+
by_name[name].map(&:type)
|
109
113
|
end
|
110
114
|
|
111
115
|
def case(name, type: nil)
|
112
|
-
if type && target_case = to_h[key(name, type)]
|
116
|
+
if type && (target_case = to_h[key(name, type)])
|
113
117
|
return target_case
|
114
118
|
elsif type
|
115
119
|
raise UseCases::UnknownCase.new(case_name: name, type: type)
|
116
120
|
end
|
117
|
-
raise UseCases::UnknownCase.new(case_name: name, type: type) unless cases = by_name[name]
|
118
|
-
raise UseCases::AmbiguousCaseReference.new(case_name: name)
|
121
|
+
raise UseCases::UnknownCase.new(case_name: name, type: type) unless (cases = by_name[name])
|
122
|
+
raise UseCases::AmbiguousCaseReference.new(case_name: name) if cases.length > 1
|
123
|
+
|
119
124
|
cases.first
|
120
125
|
end
|
121
126
|
|
@@ -137,7 +142,8 @@ module Eco
|
|
137
142
|
# first, make sure it loads pending `:custom_children` children to be loaded
|
138
143
|
re_init = self.class.autoload_children(self)
|
139
144
|
return true if @cache_init && !re_init
|
140
|
-
|
145
|
+
|
146
|
+
@by_name = @usecases.values.group_by(&:name)
|
141
147
|
@cache_init = true
|
142
148
|
end
|
143
149
|
|
@@ -1,7 +1,8 @@
|
|
1
|
+
# rubocop:disable Style/SpecialGlobalVars
|
1
2
|
module Eco
|
2
3
|
module Data
|
3
4
|
module Files
|
4
|
-
DEFAULT_TIMESTAMP_PATTERN = '%Y-%m-%dT%H%M%S'
|
5
|
+
DEFAULT_TIMESTAMP_PATTERN = '%Y-%m-%dT%H%M%S'.freeze
|
5
6
|
|
6
7
|
class << self
|
7
8
|
def included(base)
|
@@ -22,9 +23,11 @@ module Eco
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def read_with_tolerance(file, encoding:, tolerance: 5)
|
25
|
-
|
26
|
+
content = get_file_content_with_encoding(file, encoding: encoding)
|
27
|
+
return nil unless content
|
28
|
+
|
26
29
|
content.scrub do |bytes|
|
27
|
-
replacement =
|
30
|
+
replacement = "<#{bytes.unpack1('H*')}>"
|
28
31
|
if tolerance <= 0
|
29
32
|
logger.error("There were more than 5 encoding errors in the file '#{file}'.")
|
30
33
|
return content
|
@@ -67,8 +70,9 @@ module Eco
|
|
67
70
|
end
|
68
71
|
|
69
72
|
def file_exists?(file)
|
70
|
-
return false
|
71
|
-
|
73
|
+
return false unless file
|
74
|
+
|
75
|
+
File.exist?(file) || File.exist?(File.expand_path(file))
|
72
76
|
end
|
73
77
|
|
74
78
|
def dir_exists?(path)
|
@@ -79,9 +83,9 @@ module Eco
|
|
79
83
|
date.strftime(timestamp_pattern)
|
80
84
|
end
|
81
85
|
|
82
|
-
def timestamp_file(filename, timestamp_pattern =DEFAULT_TIMESTAMP_PATTERN)
|
86
|
+
def timestamp_file(filename, timestamp_pattern = DEFAULT_TIMESTAMP_PATTERN)
|
83
87
|
file_pattern = Eco::Data::Files::FilePattern.new(filename)
|
84
|
-
file_pattern.resolve(start: timestamp(timestamp_pattern) + '_')
|
88
|
+
file_pattern.resolve(start: timestamp(timestamp_pattern) + '_') # rubocop:disable Style/StringConcatenation
|
85
89
|
end
|
86
90
|
|
87
91
|
def copy_file(source_file, dest_file, time_stamp: false)
|
@@ -90,8 +94,9 @@ module Eco
|
|
90
94
|
end
|
91
95
|
|
92
96
|
def file_empty?(path)
|
93
|
-
return true
|
94
|
-
|
97
|
+
return true unless File.file?(path)
|
98
|
+
|
99
|
+
File.empty?(path)
|
95
100
|
end
|
96
101
|
|
97
102
|
def script_subfolder
|
@@ -104,11 +109,17 @@ module Eco
|
|
104
109
|
target = File.join(File.expand_path(folder), pattern)
|
105
110
|
Dir[target].tap do |dir_files|
|
106
111
|
dir_files.select! {|f| File.file?(f)}
|
112
|
+
|
107
113
|
if older_than
|
108
|
-
dir_files.select!
|
114
|
+
dir_files.select! do |f|
|
115
|
+
File.mtime(f) < (Time.now - (60*60*24*older_than))
|
116
|
+
end
|
109
117
|
end
|
110
|
-
|
111
|
-
|
118
|
+
|
119
|
+
if regexp.is_a?(Regexp)
|
120
|
+
dir_files.select! do |f|
|
121
|
+
File.basename(f).match(regexp)
|
122
|
+
end
|
112
123
|
end
|
113
124
|
end.sort
|
114
125
|
end
|
@@ -125,3 +136,5 @@ module Eco
|
|
125
136
|
end
|
126
137
|
end
|
127
138
|
end
|
139
|
+
|
140
|
+
# rubocop:enable Style/SpecialGlobalVars
|
@@ -37,14 +37,9 @@ module Eco
|
|
37
37
|
target_key = ext_keys.first unless ext_keys.empty? || ext_keys.include?(target_key)
|
38
38
|
end
|
39
39
|
|
40
|
-
puts "final target_key: '#{key}' => '#{target_key}'" if key == 'barCamel'
|
41
|
-
|
42
40
|
hash[target_key] = value
|
43
41
|
hash_isca_resolve_key!(hash, key, prefer: prefer, residual: residual)
|
44
42
|
|
45
|
-
pp hash if key == 'barCamel'
|
46
|
-
puts "*" * 20 if key == 'barCamel'
|
47
|
-
|
48
43
|
value
|
49
44
|
end
|
50
45
|
|
@@ -8,7 +8,8 @@ module Eco
|
|
8
8
|
|
9
9
|
# Parser/serializer.
|
10
10
|
# @param attr [String, Symbol] name of the parsed/serialized.
|
11
|
-
# @param dependencies [Hash] provisioning of _**default dependencies**_
|
11
|
+
# @param dependencies [Hash] provisioning of _**default dependencies**_
|
12
|
+
# that will be required when calling back to the
|
12
13
|
# parsing or serializing functions.
|
13
14
|
def initialize(attr, dependencies: {})
|
14
15
|
@attr = attr
|
@@ -67,7 +68,8 @@ module Eco
|
|
67
68
|
# @param object [Any] source data to be serialized.
|
68
69
|
# @param dependencies [Hash] _additional dependencies_ that should be merged to the _default dependencies_.
|
69
70
|
def serialize(object, category = :default, dependencies: {}, &block)
|
70
|
-
|
71
|
+
msg = "There is no serializer of type '#{category}' for this attribue '#{attr}'"
|
72
|
+
raise msg unless serializer_category?(category)
|
71
73
|
|
72
74
|
deps = resolve_dependencies(@dependencies.merge(dependencies), &block)
|
73
75
|
call_block(object, deps, attr, &@serializer[category.to_sym])
|
data/lib/eco/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eco-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.3.
|
159
|
+
version: 0.3.16
|
160
160
|
- - "<"
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0.4'
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
requirements:
|
167
167
|
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.3.
|
169
|
+
version: 0.3.16
|
170
170
|
- - "<"
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0.4'
|