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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ebe915f7b5f801872ab46b936f29fe3795f54c07
4
- data.tar.gz: 2f48bb7ccd56f9f00a7ed91f643e2ffb135dc6b5
3
+ metadata.gz: e98ad1206ae2fd432192dcc293147aa0a5f0bd3e
4
+ data.tar.gz: 012bf7a5109b391cc1ba5ae3159cb1a1ec10e648
5
5
  SHA512:
6
- metadata.gz: 47482d74f606f03a5c251a3a2738f52ec4a02be926aef629358fc92dac17a30af59fd8f654df0268b629dbad460982c27e2ccdfb478ca9da3e8176120ce6e9c7
7
- data.tar.gz: 5721c74ceb2b55b51842d229a828f1689b298382f50782782653c66ef0644ad290bc0672c945cb352eb0f5208bb22b3c1c7ff206af4587a11a3f76c7c5c76c89
6
+ metadata.gz: 772a63b8e3436f1da7cc212e6e2d4418144df4d0a7bfc4aca0bc6938adec0c94d8af120df21743ee47f8fa59d316b3f7e44b4ac7bdef836f3725f26286719b9a
7
+ data.tar.gz: 070be2c85255749782e8b9796b29556376051ff6485bb889dcf4dafecd07a16f87b28a97d4835922f1ab6b24b243136c9d63ac1aaf2d86787f1bce9b88ffe60a
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- data_maps (0.3.2)
4
+ data_maps (0.3.3)
5
5
  activesupport (~> 3.2, >= 3.2.21)
6
6
 
7
7
  GEM
@@ -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
@@ -1,6 +1,6 @@
1
1
  module DataMaps
2
2
  module Converter
3
- # Converts numeric values
3
+ # Converts hash keys
4
4
  #
5
5
  # @since 0.0.1
6
6
  class Key < Base
@@ -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.each do |condition|
61
- data = condition.execute(data)
60
+ conditions.reduce(data) do |data, condition|
61
+ condition.execute(data)
62
62
  end
63
-
64
- data
65
63
  end
66
64
 
67
- # Execute converter
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.each do |converter|
73
- data = converter.execute(data)
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
@@ -14,11 +14,9 @@ module DataMaps
14
14
  #
15
15
  # @param [mixed] data
16
16
  def execute(data)
17
- converter.each do |converter|
18
- data = converter.execute(data)
17
+ converter.reduce(data) do |data, c|
18
+ c.execute(data)
19
19
  end
20
-
21
- data
22
20
  end
23
21
  end
24
22
  end
@@ -1,3 +1,3 @@
1
1
  module DataMaps
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
@@ -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.2
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