data_maps 0.3.2 → 0.3.3
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/Gemfile.lock +1 -1
- data/lib/data_maps/converter/for_each.rb +31 -0
- data/lib/data_maps/converter/key.rb +1 -1
- data/lib/data_maps/statement.rb +5 -9
- data/lib/data_maps/then/convert.rb +2 -4
- data/lib/data_maps/version.rb +1 -1
- data/spec/data_maps/converter/for_each_spec.rb +44 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e98ad1206ae2fd432192dcc293147aa0a5f0bd3e
|
4
|
+
data.tar.gz: 012bf7a5109b391cc1ba5ae3159cb1a1ec10e648
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 772a63b8e3436f1da7cc212e6e2d4418144df4d0a7bfc4aca0bc6938adec0c94d8af120df21743ee47f8fa59d316b3f7e44b4ac7bdef836f3725f26286719b9a
|
7
|
+
data.tar.gz: 070be2c85255749782e8b9796b29556376051ff6485bb889dcf4dafecd07a16f87b28a97d4835922f1ab6b24b243136c9d63ac1aaf2d86787f1bce9b88ffe60a
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
module DataMaps
|
2
|
+
module Converter
|
3
|
+
# Apply Converter for each entry
|
4
|
+
#
|
5
|
+
# @since 0.3.3
|
6
|
+
class ForEach < Base
|
7
|
+
attr_reader :converter
|
8
|
+
|
9
|
+
# The after initialize callback
|
10
|
+
def after_initialize
|
11
|
+
@converter = DataMaps::Converter.create_from_map(option)
|
12
|
+
end
|
13
|
+
|
14
|
+
# The execute converters for each value
|
15
|
+
#
|
16
|
+
# @param [mixed] data
|
17
|
+
# @return [mixed] mutated data
|
18
|
+
def execute(data)
|
19
|
+
case data
|
20
|
+
when Array
|
21
|
+
data.map do |value|
|
22
|
+
converter.reduce(value) do |value, converter|
|
23
|
+
converter.execute(value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
else data
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/data_maps/statement.rb
CHANGED
@@ -57,23 +57,19 @@ module DataMaps
|
|
57
57
|
# @param [mixed] data
|
58
58
|
# @return [mixed] mutated data
|
59
59
|
def execute_conditions(data)
|
60
|
-
conditions.
|
61
|
-
|
60
|
+
conditions.reduce(data) do |data, condition|
|
61
|
+
condition.execute(data)
|
62
62
|
end
|
63
|
-
|
64
|
-
data
|
65
63
|
end
|
66
64
|
|
67
|
-
#
|
65
|
+
# Apply all converter to the given data
|
68
66
|
#
|
69
67
|
# @param [mixed] data
|
70
68
|
# @return [mixed] mutated data
|
71
69
|
def execute_converter(data)
|
72
|
-
converter.
|
73
|
-
|
70
|
+
converter.reduce(data) do |data, converter|
|
71
|
+
converter.execute(data)
|
74
72
|
end
|
75
|
-
|
76
|
-
data
|
77
73
|
end
|
78
74
|
|
79
75
|
private
|
data/lib/data_maps/version.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DataMaps::Converter::ForEach do
|
4
|
+
subject do
|
5
|
+
DataMaps::Converter::ForEach.new([
|
6
|
+
{ apply: :ruby, option: [:fetch, 'name'] },
|
7
|
+
{ apply: :ruby, option: [:join, "\n"] }
|
8
|
+
])
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#initialize' do
|
12
|
+
it 'Creates the converter' do
|
13
|
+
expect(subject.converter.length).to eq 2
|
14
|
+
expect(subject.converter[0]).to be_a DataMaps::Converter::Ruby
|
15
|
+
expect(subject.converter[1]).to be_a DataMaps::Converter::Ruby
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'converter has the correct options' do
|
19
|
+
expect(subject.converter[0].option).to eq [:fetch, 'name']
|
20
|
+
expect(subject.converter[1].option).to eq [:join, "\n"]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#execute' do
|
25
|
+
it 'calls the given converter ordered for each entry in an array' do
|
26
|
+
data = %w[ a b ]
|
27
|
+
expect(subject.converter[0]).to receive(:execute).with('a').and_return('aa').ordered
|
28
|
+
expect(subject.converter[1]).to receive(:execute).with('aa').and_return('aaa').ordered
|
29
|
+
|
30
|
+
expect(subject.converter[0]).to receive(:execute).with('b').and_return('bb').ordered
|
31
|
+
expect(subject.converter[1]).to receive(:execute).with('bb').and_return('bbb').ordered
|
32
|
+
|
33
|
+
expect(subject.execute(data)).to eq %w[ aaa bbb ]
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns the original data for non arrays' do
|
37
|
+
data = { x: 1, y: 2 }
|
38
|
+
expect(subject.converter[0]).to_not receive(:execute)
|
39
|
+
expect(subject.converter[1]).to_not receive(:execute)
|
40
|
+
|
41
|
+
expect(subject.execute(data)).to eq data
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Axel Wahlen
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- lib/data_maps/converter/affixes.rb
|
124
124
|
- lib/data_maps/converter/base.rb
|
125
125
|
- lib/data_maps/converter/bool.rb
|
126
|
+
- lib/data_maps/converter/for_each.rb
|
126
127
|
- lib/data_maps/converter/key.rb
|
127
128
|
- lib/data_maps/converter/map.rb
|
128
129
|
- lib/data_maps/converter/numeric.rb
|
@@ -152,6 +153,7 @@ files:
|
|
152
153
|
- spec/data_maps/converter/affixes_spec.rb
|
153
154
|
- spec/data_maps/converter/base_spec.rb
|
154
155
|
- spec/data_maps/converter/bool_spec.rb
|
156
|
+
- spec/data_maps/converter/for_each_spec.rb
|
155
157
|
- spec/data_maps/converter/key_spec.rb
|
156
158
|
- spec/data_maps/converter/map_spec.rb
|
157
159
|
- spec/data_maps/converter/numeric_spec.rb
|
@@ -206,6 +208,7 @@ test_files:
|
|
206
208
|
- spec/data_maps/converter/affixes_spec.rb
|
207
209
|
- spec/data_maps/converter/base_spec.rb
|
208
210
|
- spec/data_maps/converter/bool_spec.rb
|
211
|
+
- spec/data_maps/converter/for_each_spec.rb
|
209
212
|
- spec/data_maps/converter/key_spec.rb
|
210
213
|
- spec/data_maps/converter/map_spec.rb
|
211
214
|
- spec/data_maps/converter/numeric_spec.rb
|