cure 0.1.1 → 0.1.2
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/.rubocop.yml +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +16 -6
- data/exe/cure +7 -3
- data/lib/cure/config.rb +17 -3
- data/lib/cure/coordinator.rb +72 -0
- data/lib/cure/export/exporter.rb +32 -7
- data/lib/cure/extract/builder.rb +27 -0
- data/lib/cure/extract/csv_lookup.rb +32 -0
- data/lib/cure/extract/extractor.rb +123 -0
- data/lib/cure/generator/base_generator.rb +51 -0
- data/lib/cure/generator/case_generator.rb +25 -0
- data/lib/cure/generator/character_generator.rb +35 -0
- data/lib/cure/generator/faker_generator.rb +25 -0
- data/lib/cure/generator/guid_generator.rb +16 -0
- data/lib/cure/generator/hex_generator.rb +16 -0
- data/lib/cure/generator/imports.rb +12 -0
- data/lib/cure/generator/number_generator.rb +16 -0
- data/lib/cure/generator/placeholder_generator.rb +20 -0
- data/lib/cure/generator/redact_generator.rb +16 -0
- data/lib/cure/generator/variable_generator.rb +20 -0
- data/lib/cure/helpers/file_helpers.rb +40 -0
- data/lib/cure/helpers/object_helpers.rb +29 -0
- data/lib/cure/log.rb +3 -3
- data/lib/cure/main.rb +40 -31
- data/lib/cure/strategy/append_strategy.rb +24 -0
- data/lib/cure/strategy/base_strategy.rb +123 -0
- data/lib/cure/strategy/end_with_strategy.rb +46 -0
- data/lib/cure/strategy/full_strategy.rb +24 -0
- data/lib/cure/strategy/imports.rb +10 -0
- data/lib/cure/strategy/match_strategy.rb +43 -0
- data/lib/cure/strategy/regex_strategy.rb +49 -0
- data/lib/cure/strategy/split_strategy.rb +53 -0
- data/lib/cure/strategy/start_with_strategy.rb +47 -0
- data/lib/cure/template/dispatch.rb +30 -0
- data/lib/cure/template/extraction.rb +38 -0
- data/lib/cure/template/template.rb +28 -0
- data/lib/cure/template/transformations.rb +26 -0
- data/lib/cure/transformation/candidate.rb +23 -9
- data/lib/cure/transformation/transform.rb +33 -41
- data/lib/cure/validators.rb +71 -0
- data/lib/cure/version.rb +1 -1
- data/lib/cure.rb +9 -4
- data/templates/aws_cur_template.json +130 -128
- data/templates/example_template.json +46 -30
- metadata +36 -9
- data/lib/cure/csv_helpers.rb +0 -6
- data/lib/cure/file_helpers.rb +0 -38
- data/lib/cure/generator/base.rb +0 -148
- data/lib/cure/object_helpers.rb +0 -27
- data/lib/cure/strategy/base.rb +0 -223
data/lib/cure/strategy/base.rb
DELETED
@@ -1,223 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "singleton"
|
4
|
-
|
5
|
-
module Cure
|
6
|
-
module Strategy
|
7
|
-
# Singleton Strategy for storing data across all processes
|
8
|
-
module History
|
9
|
-
# @return [Hash]
|
10
|
-
def history
|
11
|
-
HistoryCache.instance.history_cache
|
12
|
-
end
|
13
|
-
|
14
|
-
# @return [String]
|
15
|
-
def retrieve_history(source_value)
|
16
|
-
history[source_value] unless source_value.nil? || source_value == ""
|
17
|
-
end
|
18
|
-
|
19
|
-
# @param [String] source_value
|
20
|
-
# @param [String] value
|
21
|
-
def store_history(source_value, value)
|
22
|
-
history[source_value] = value unless source_value.nil? || source_value == ""
|
23
|
-
end
|
24
|
-
|
25
|
-
def reset_history
|
26
|
-
HistoryCache.instance.reset
|
27
|
-
end
|
28
|
-
alias clear_history reset_history
|
29
|
-
|
30
|
-
class HistoryCache
|
31
|
-
include Singleton
|
32
|
-
|
33
|
-
attr_reader :history_cache
|
34
|
-
|
35
|
-
def initialize
|
36
|
-
@history_cache = {}
|
37
|
-
end
|
38
|
-
|
39
|
-
def reset
|
40
|
-
@history_cache = {}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class Base
|
46
|
-
include History
|
47
|
-
|
48
|
-
# Additional details needed to make substitution.
|
49
|
-
# @return [Hash]
|
50
|
-
attr_accessor :options
|
51
|
-
|
52
|
-
def initialize(options)
|
53
|
-
@options = options
|
54
|
-
end
|
55
|
-
|
56
|
-
# @param [String] source_value
|
57
|
-
# @param [Generator::Base] generator
|
58
|
-
# @return [String]
|
59
|
-
#
|
60
|
-
# This will retrieve the (partial) value, then generate a new replacement.
|
61
|
-
def extract(source_value, generator)
|
62
|
-
extracted_value = _retrieve_value(source_value)
|
63
|
-
|
64
|
-
existing = retrieve_history(extracted_value)
|
65
|
-
return _replace_value(source_value, existing) if existing
|
66
|
-
|
67
|
-
generated_value = generator.generate(source_value).to_s
|
68
|
-
value = _replace_value(source_value, generated_value)
|
69
|
-
|
70
|
-
store_history(extracted_value, generated_value)
|
71
|
-
|
72
|
-
value
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
# @param [String] _source_value
|
78
|
-
def _retrieve_value(_source_value)
|
79
|
-
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
80
|
-
end
|
81
|
-
|
82
|
-
# @param [String] _source_value
|
83
|
-
# @param [String] _generated_value
|
84
|
-
# @return [String]
|
85
|
-
def _replace_value(_source_value, _generated_value)
|
86
|
-
raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
|
87
|
-
end
|
88
|
-
|
89
|
-
def replace_partial_record
|
90
|
-
replace_partial = @options["replace_partial"]
|
91
|
-
return replace_partial || false unless replace_partial.instance_of?(String)
|
92
|
-
|
93
|
-
(replace_partial || "true").to_s == "true"
|
94
|
-
end
|
95
|
-
|
96
|
-
def value?(value)
|
97
|
-
!value.nil? && value != ""
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
class FullStrategy < Base
|
102
|
-
private
|
103
|
-
|
104
|
-
# @param [String] source_value
|
105
|
-
# @return [String]
|
106
|
-
def _retrieve_value(source_value)
|
107
|
-
source_value
|
108
|
-
end
|
109
|
-
|
110
|
-
# @param [String] _source_value
|
111
|
-
# @param [String] generated_value
|
112
|
-
# @return [String]
|
113
|
-
def _replace_value(_source_value, generated_value)
|
114
|
-
generated_value
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
class RegexStrategy < Base
|
119
|
-
# gsub catchment group
|
120
|
-
# @param [String] source_value
|
121
|
-
def _retrieve_value(source_value)
|
122
|
-
m = /#{@options["regex_cg"]}/.match(source_value)
|
123
|
-
return unless m.instance_of?(MatchData) && (!m[1].nil? && m[1] != "")
|
124
|
-
|
125
|
-
m[1]
|
126
|
-
end
|
127
|
-
|
128
|
-
# @param [String] source_value
|
129
|
-
# @param [String] generated_value
|
130
|
-
# @return [String]
|
131
|
-
def _replace_value(source_value, generated_value)
|
132
|
-
m = /#{@options["regex_cg"]}/.match(source_value)
|
133
|
-
return unless m.instance_of?(MatchData) && (!m[1].nil? && m[1] != "")
|
134
|
-
|
135
|
-
generated_value unless replace_partial_record
|
136
|
-
|
137
|
-
source_value.gsub(m[1], generated_value)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
class MatchStrategy < Base
|
142
|
-
# gsub catchment group
|
143
|
-
# @param [String] source_value
|
144
|
-
def _retrieve_value(source_value)
|
145
|
-
@options["match"] || nil if source_value.include? @options["match"]
|
146
|
-
end
|
147
|
-
|
148
|
-
# @param [String] source_value
|
149
|
-
# @param [String] generated_value
|
150
|
-
# @return [String]
|
151
|
-
def _replace_value(source_value, generated_value)
|
152
|
-
return unless source_value.include? @options["match"]
|
153
|
-
|
154
|
-
source_value.gsub(@options["match"], generated_value)
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
class StartWithStrategy < Base
|
159
|
-
# gsub catchment group
|
160
|
-
# @param [String] source_value
|
161
|
-
def _retrieve_value(source_value)
|
162
|
-
@options["match"] || nil if source_value.start_with? @options["match"]
|
163
|
-
end
|
164
|
-
|
165
|
-
# @param [String] source_value
|
166
|
-
# @param [String] generated_value
|
167
|
-
# @return [String]
|
168
|
-
def _replace_value(source_value, generated_value)
|
169
|
-
return unless source_value.start_with? @options["match"]
|
170
|
-
|
171
|
-
return generated_value unless replace_partial_record
|
172
|
-
|
173
|
-
@options["match"] + generated_value
|
174
|
-
# source_value.chomp(@options["match"]) + generated_value
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
class EndWithStrategy < Base
|
179
|
-
# gsub catchment group
|
180
|
-
# @param [String] source_value
|
181
|
-
def _retrieve_value(source_value)
|
182
|
-
@options["match"] || nil if source_value.end_with? @options["match"]
|
183
|
-
end
|
184
|
-
|
185
|
-
# @param [String] source_value
|
186
|
-
# @param [String] generated_value
|
187
|
-
# @return [String]
|
188
|
-
def _replace_value(source_value, generated_value)
|
189
|
-
return unless source_value.end_with? @options["match"]
|
190
|
-
|
191
|
-
return generated_value unless replace_partial_record
|
192
|
-
|
193
|
-
generated_value + @options["match"]
|
194
|
-
# generated_value + source_value.reverse.chomp(@options["match"].reverse).reverse
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
class SplitStrategy < Base
|
199
|
-
# @param [String] source_value
|
200
|
-
def _retrieve_value(source_value)
|
201
|
-
split_token = @options["token"]
|
202
|
-
|
203
|
-
return unless source_value.include?(split_token)
|
204
|
-
|
205
|
-
result_arr = source_value.split(split_token)
|
206
|
-
result_arr[@options["index"]]
|
207
|
-
end
|
208
|
-
|
209
|
-
# @param [String] source_value
|
210
|
-
# @param [String] generated_value
|
211
|
-
# @return [String]
|
212
|
-
def _replace_value(source_value, generated_value)
|
213
|
-
split_token = @options["token"]
|
214
|
-
|
215
|
-
return unless source_value.include?(split_token)
|
216
|
-
|
217
|
-
result_arr = source_value.split(split_token)
|
218
|
-
result_arr[@options["index"]] = generated_value if value?(result_arr[@options["index"]])
|
219
|
-
result_arr.join(split_token)
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|