yaoc 0.0.10 → 0.0.11

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: 64462398acb11cc3f3ef2ddb2c1076de8aaf1855
4
- data.tar.gz: ffb691a062e66431fd84e6aea85b36f23fbd42d5
3
+ metadata.gz: b1d8b71655a2f448f78445bad0780255aabe5dbd
4
+ data.tar.gz: 5888fd8a52a6aed1903541425bb32d8d74352343
5
5
  SHA512:
6
- metadata.gz: 71223debc913dd57538de730514f00fc645f40c05262ac271d411a39ac35a5c377d6f5a0b6f17b9286166a30a505d084f55b62b5fc7a2f8220680608b35b7e57
7
- data.tar.gz: 46556a67045853315b84949f7193212558e8d6ff7d0f2e1587a6e2c5b2c2483d837636a12e201a2cfec4448dc3dcc91d168f78a201cdd6ca1c20f746e7d985c2
6
+ metadata.gz: 83823a34c900b9a1c7f072a8668b2d7b271996777b49f20e8be0108daab48e2cfef16ce885c83dcce4ade8dc85797995fd24d6beec15306e9ce1aeec180ce97c
7
+ data.tar.gz: dad524584b6d519d1e1b83e79f139c0343afe38667e804b7b868ddda4ae681ac73b4018817e43a89b619eb4f737c486d2bcd063b16af34db271f03fedd8c1fec
data/README.md CHANGED
@@ -18,7 +18,67 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- For uptodate doc's take a look into the specs.
21
+ ### What does it do in a high level?
22
+
23
+ You say transform an object of class A into an object of class B:
24
+
25
+ ```ruby
26
+ mapper =Yaoc::ObjectMapper.new(B, A) # yes, first what you want, then where to get it
27
+ ```
28
+
29
+ Then you define some rules how it should be done:
30
+
31
+
32
+ ```ruby
33
+ mapper.add_mapping do
34
+ fetcher :public_send
35
+ strategy :to_hash_mapping # default or :to_array_mapping
36
+
37
+ rule to: :role, from: :r_role
38
+
39
+ rule to: :firstname,
40
+ from: :fullname,
41
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :firstname, source.fullname.split().first) },
42
+ reverse_converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :fullname, "#{source.firstname} #{source.lastname}") }
43
+
44
+ rule to: :lastname,
45
+ from: :fullname,
46
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :lastname, source.fullname.split().last ) },
47
+ reverse_converter: ->(source, result){ result }
48
+
49
+ rule to: :id
50
+ end
51
+ ```
52
+
53
+ After this you can transform an object of class A into an object of class B:
54
+
55
+ ```ruby
56
+ mapper.load(A.new)
57
+ ```
58
+
59
+
60
+ Or reverse:
61
+
62
+ ```ruby
63
+ mapper.dump(B.new)
64
+ ```
65
+
66
+ Depending on ```strategy``` or ```reverse_strategy``` the input object is first
67
+ transformed into a Hash or Array and after this passed to the class constructor.
68
+
69
+ You can also pass an existing object to load and dump:
70
+
71
+
72
+ ```ruby
73
+ b = B.new
74
+ mapper.load(A.new, b)
75
+
76
+ a = A.new
77
+ mapper.dump(B.new, a)
78
+ ```
79
+
80
+ In this case setters with matching name to the hash key
81
+ are invoked with the hash value as value.
22
82
 
23
83
  ### The resulting classes have hash enabled constructors?
24
84
 
@@ -312,7 +372,7 @@ role_mapper.load(old_role, new_user5)
312
372
 
313
373
  # OR
314
374
  #
315
- # mapper_chain = Yaoc::MapperChain.new(user_mapper, role_mapper)
375
+ # mapper_chain = Yaoc::ManyToOneMapperChain.new(user_mapper, role_mapper)
316
376
  # new_user5 = mapper_chain.load_all([old_user5, old_role])
317
377
 
318
378
 
@@ -42,7 +42,7 @@ puts "\n" * 5
42
42
 
43
43
  # OR
44
44
 
45
- mapper_chain = Yaoc::MapperChain.new(user_mapper, role_mapper)
45
+ mapper_chain = Yaoc::ManyToOneMapperChain.new(user_mapper, role_mapper)
46
46
 
47
47
  new_user5 = mapper_chain.load_all([old_user5, old_role])
48
48
 
data/lib/yaoc.rb CHANGED
@@ -3,6 +3,7 @@ require "yaoc/version"
3
3
  require 'yaoc/helper/struct_hash_constructor'
4
4
  require 'yaoc/helper/to_proc_delegator'
5
5
  require 'yaoc/helper/thread_local_storage'
6
+ require 'yaoc/helper/thread_global_storage'
6
7
  require 'yaoc/helper/scope'
7
8
 
8
9
  require 'yaoc/mapper_registry'
@@ -15,7 +16,8 @@ Dir[File.join(File.expand_path(__dir__ ), "yaoc/strategies/*.rb")].each { |f| re
15
16
 
16
17
  require 'yaoc/converter_builder'
17
18
  require 'yaoc/object_mapper'
18
- require 'yaoc/mapper_chain'
19
+ require 'yaoc/many_to_one_mapper_chain'
20
+ require 'yaoc/one_to_many_mapper_chain'
19
21
 
20
22
  module Yaoc
21
23
 
@@ -4,13 +4,13 @@ module Yaoc
4
4
 
5
5
  attr_accessor :scope_name, :storage_source
6
6
 
7
- def initialize(scope_name="default", storage_source=ThreadLocalStorage)
7
+ def initialize(scope_name="default", storage_source=ThreadGlobalStorage)
8
8
  self.scope_name = scope_name
9
9
  self.storage_source = storage_source
10
10
  end
11
11
 
12
12
  def storage
13
- storage_source.for(scope_name).data
13
+ storage_source.for(scope_name)
14
14
  end
15
15
 
16
16
  def []=(key, value)
@@ -0,0 +1,56 @@
1
+ module Yaoc
2
+ module Helper
3
+ require 'thread'
4
+
5
+ class ThreadGlobalStorage
6
+ class << self
7
+ private :new
8
+ end
9
+
10
+ attr_accessor :data
11
+
12
+ @mutex = Mutex.new
13
+
14
+ def self.mutex
15
+ @mutex
16
+ end
17
+
18
+ def self.for(scope_name="default")
19
+ mutex.synchronize {
20
+ @storage ||= {}
21
+ @storage[scope_name] ||= new
22
+ }
23
+ end
24
+
25
+ def initialize
26
+ self.data||={}
27
+ end
28
+
29
+ def []=(key, value)
30
+ mutex.synchronize {
31
+ self.data[key]=value
32
+ }
33
+ end
34
+
35
+ def [](key)
36
+ self.data[key]
37
+ end
38
+
39
+ def clear!
40
+ mutex.synchronize {
41
+ self.data.clear
42
+ }
43
+ end
44
+
45
+ def fetch(*args, &block)
46
+ self.data.fetch(*args, &block)
47
+ end
48
+
49
+ def mutex
50
+ self.class.mutex
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+
@@ -14,6 +14,23 @@ module Yaoc
14
14
  def initialize
15
15
  self.data||={}
16
16
  end
17
+
18
+ def []=(key, value)
19
+ self.data[key]=value
20
+ end
21
+
22
+ def [](key)
23
+ self.data[key]
24
+ end
25
+
26
+ def clear!
27
+ self.data.clear
28
+ end
29
+
30
+ def fetch(*args, &block)
31
+ self.data.fetch(*args, &block)
32
+ end
33
+
17
34
  end
18
35
  end
19
36
  end
@@ -1,5 +1,5 @@
1
1
  module Yaoc
2
- class MapperChain
2
+ class ManyToOneMapperChain
3
3
  attr_accessor :converter, :last_result, :next_result
4
4
 
5
5
  def self.registry
@@ -50,7 +50,7 @@ module Yaoc
50
50
  protected
51
51
 
52
52
  def converter=(new_converter)
53
- @converter = new_converter.map{|converter| converter.is_a?(Symbol) ? MapperChain.registry.for(converter) : converter}
53
+ @converter = new_converter.map{|converter| converter.is_a?(Symbol) ? ManyToOneMapperChain.registry.for(converter) : converter}
54
54
  end
55
55
 
56
56
  def converter_iterator
@@ -2,6 +2,10 @@ module Yaoc
2
2
  module MapperRegistry
3
3
  module_function
4
4
 
5
+ def scope_storage(new_storage)
6
+ @scope = Helper::Scope.new("mappings", new_storage)
7
+ end
8
+
5
9
  def scope
6
10
  @scope ||= Helper::Scope.new("mappings")
7
11
  end
@@ -24,6 +24,8 @@ module Yaoc
24
24
  nil
25
25
  end
26
26
  end
27
+ alias_method :to_hash_or_array, :call
28
+
27
29
 
28
30
  def converter_methods
29
31
  self.class.converter_methods
@@ -8,7 +8,7 @@ module Yaoc
8
8
 
9
9
  module InstanceMethods
10
10
  def call(pre_created_object=nil)
11
- source_converted_to_hash_or_array = super()
11
+ source_converted_to_hash_or_array = to_hash_or_array()
12
12
  unless source_converted_to_hash_or_array.nil?
13
13
  if pre_created_object.nil?
14
14
  create_target_from_class(source_converted_to_hash_or_array)
@@ -19,6 +19,7 @@ module Yaoc
19
19
  pre_created_object
20
20
  end
21
21
  end
22
+ alias_method :to_object, :call
22
23
 
23
24
  def source_method
24
25
  self.target_source.respond_to?(:call) ? :call : :new
@@ -0,0 +1,51 @@
1
+ module Yaoc
2
+ class OneToManyMapperChain
3
+ attr_accessor :converter, :last_result, :next_result
4
+
5
+ def self.registry
6
+ Yaoc::MapperRegistry
7
+ end
8
+
9
+ def initialize(*converter)
10
+ self.converter = converter
11
+ end
12
+
13
+ def load_all(input_object, objects_to_fill=[])
14
+ objects_to_fill = Array(objects_to_fill)
15
+ results = []
16
+
17
+ each_object_with_converter(objects_to_fill) do |converter, object_to_fill|
18
+ results << converter.load(input_object, object_to_fill)
19
+ end
20
+
21
+ self.last_result = results
22
+ end
23
+
24
+ def dump_all(input_object, objects_to_fill=nil)
25
+ objects_to_fill = Array(objects_to_fill)
26
+ results = []
27
+
28
+ each_object_with_converter(objects_to_fill) do |converter, object_to_fill|
29
+ results << converter.dump(input_object, object_to_fill)
30
+ end
31
+
32
+ self.last_result = results
33
+ end
34
+
35
+ protected
36
+
37
+ def converter=(new_converter)
38
+ @converter = new_converter.map{|converter| converter.is_a?(Symbol) ? OneToManyMapperChain.registry.for(converter) : converter}
39
+ end
40
+
41
+ def each_object_with_converter(objects_to_fill)
42
+
43
+ converter.each_with_index do |converter, index|
44
+ object_to_fill = objects_to_fill[index]
45
+
46
+ yield converter, object_to_fill
47
+ end
48
+ end
49
+
50
+ end
51
+ end
data/lib/yaoc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yaoc
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -7,7 +7,7 @@ feature 'Map multiple objects to one', %q{
7
7
  } do
8
8
 
9
9
  given(:mapper_chain){
10
- Yaoc::MapperChain.new(first_mapper, second_mapper)
10
+ Yaoc::ManyToOneMapperChain.new(first_mapper, second_mapper)
11
11
  }
12
12
 
13
13
  given!(:first_mapper){
@@ -67,7 +67,7 @@ feature 'Map multiple objects to one', %q{
67
67
  end
68
68
 
69
69
  scenario 'symbols as converter' do
70
- mapper_chain = Yaoc::MapperChain.new(:first_mapper, :second_mapper)
70
+ mapper_chain = Yaoc::ManyToOneMapperChain.new(:first_mapper, :second_mapper)
71
71
 
72
72
  converted_user = mapper_chain.load_all([existing_old_user, existing_old_user])
73
73
 
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Map multiple one object to many', %q{
4
+ In order to convert objects in lesser steps
5
+ as a lib user
6
+ I want to be able to chain converters and get multiple objects out of one
7
+ } do
8
+
9
+ given(:mapper_chain){
10
+ Yaoc::OneToManyMapperChain.new(first_mapper, second_mapper)
11
+ }
12
+
13
+ given!(:first_mapper){
14
+ Yaoc::ObjectMapper.new(new_user_class, old_user_class).tap do |mapper|
15
+ mapper.add_mapping do
16
+ register_as :first_mapper
17
+ fetcher :public_send
18
+ rule to: :id
19
+ end
20
+ end
21
+ }
22
+
23
+ given!(:second_mapper){
24
+ Yaoc::ObjectMapper.new(new_user_class, old_user_class).tap do |mapper|
25
+ mapper.add_mapping do
26
+ register_as :second_mapper
27
+ fetcher :public_send
28
+ rule to: :names
29
+ end
30
+ end
31
+ }
32
+
33
+ given(:new_user_class){
34
+ Yaoc::Helper::StructHE(:id, :names)
35
+ }
36
+
37
+ given(:old_user_class){
38
+ Yaoc::Helper::StructHE(:id, :names)
39
+ }
40
+
41
+ given(:existing_old_user){
42
+ old_user_class.new(
43
+ id: 'existing_user_2',
44
+ names: ['first_name', 'second_name']
45
+ )
46
+ }
47
+
48
+ given(:existing_user){
49
+ new_user_class.new(
50
+ id: 'existing_user_2',
51
+ names: ['first_name', 'second_name']
52
+ )
53
+ }
54
+
55
+ scenario 'loads multiple result object from one input object' do
56
+ converted_users = mapper_chain.load_all(existing_old_user)
57
+
58
+ expect(converted_users[0].id).to eq 'existing_user_2'
59
+ expect(converted_users[1].names).to eq ['first_name', 'second_name']
60
+ end
61
+
62
+ scenario 'dumps multiple result object from one input object' do
63
+ converted_users = mapper_chain.dump_all(existing_user)
64
+
65
+ expect(converted_users[0].id).to eq 'existing_user_2'
66
+ expect(converted_users[1].names).to eq ['first_name', 'second_name']
67
+ end
68
+
69
+ scenario 'symbols as converter' do
70
+ mapper_chain = Yaoc::OneToManyMapperChain.new(:first_mapper, :second_mapper)
71
+
72
+ converted_users = mapper_chain.load_all(existing_old_user)
73
+
74
+ expect(converted_users[0].id).to eq 'existing_user_2'
75
+ expect(converted_users[1].names).to eq ['first_name', 'second_name']
76
+ end
77
+
78
+ end
@@ -7,7 +7,7 @@ describe Yaoc::Helper::Scope do
7
7
  end
8
8
 
9
9
  def for(*args)
10
- self
10
+ data
11
11
  end
12
12
 
13
13
  def data
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yaoc::Helper::ThreadGlobalStorage do
4
+ subject{
5
+ Yaoc::Helper::ThreadGlobalStorage
6
+ }
7
+
8
+ let(:storage){
9
+ subject.for
10
+ }
11
+
12
+ describe '.for' do
13
+ it 'creates a new object for all threads' do
14
+ subject.for
15
+
16
+ threat_one_object_id = nil
17
+ threat_two_object_id = nil
18
+ threats = []
19
+
20
+ threats << Thread.new{
21
+ threat_one_object_id = Yaoc::Helper::ThreadLocalStorage.for
22
+ }
23
+
24
+ threats << Thread.new{
25
+ threat_two_object_id = Yaoc::Helper::ThreadLocalStorage.for
26
+ }
27
+
28
+ threats.each &:join
29
+
30
+ expect(threat_one_object_id).not_to eq threat_two_object_id
31
+ end
32
+
33
+ it 'supports naming different scopes' do
34
+ second_scope = subject.for 'the second scope'
35
+ expect(second_scope.object_id).not_to be subject.for.object_id
36
+ end
37
+ end
38
+
39
+ it 'supports hash like accessors' do
40
+ storage['key'] = 1
41
+ expect(storage['key']).to eq 1
42
+ expect(storage.fetch 'key').to eq 1
43
+
44
+ storage.clear!
45
+
46
+ expect(storage['key']).to be_nil
47
+ end
48
+
49
+ end
@@ -5,6 +5,10 @@ describe Yaoc::Helper::ThreadLocalStorage do
5
5
  Yaoc::Helper::ThreadLocalStorage
6
6
  }
7
7
 
8
+ let(:storage){
9
+ subject.for
10
+ }
11
+
8
12
  describe '.for' do
9
13
  it 'creates a new object for every thread' do
10
14
  subject.for
@@ -32,4 +36,15 @@ describe Yaoc::Helper::ThreadLocalStorage do
32
36
  end
33
37
  end
34
38
 
39
+ it 'supports hash like accessors' do
40
+ storage['key'] = 1
41
+ expect(storage['key']).to eq 1
42
+ expect(storage.fetch 'key').to eq 1
43
+
44
+ storage.clear!
45
+
46
+ expect(storage['key']).to be_nil
47
+
48
+ end
49
+
35
50
  end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Yaoc::MapperChain do
3
+ describe Yaoc::ManyToOneMapperChain do
4
4
 
5
5
  subject{
6
- Yaoc::MapperChain.new(first_mapper, second_mapper)
6
+ Yaoc::ManyToOneMapperChain.new(first_mapper, second_mapper)
7
7
  }
8
8
 
9
9
  let(:first_mapper){
@@ -50,7 +50,7 @@ describe Yaoc::MapperChain do
50
50
 
51
51
  describe '.new' do
52
52
  subject{
53
- Yaoc::MapperChain
53
+ Yaoc::ManyToOneMapperChain
54
54
  }
55
55
 
56
56
  it 'converts symbols into converter' do
@@ -5,17 +5,25 @@ describe Yaoc::MapperRegistry do
5
5
  Yaoc::MapperRegistry
6
6
  }
7
7
 
8
- describe '#add' do
8
+ describe '.add' do
9
9
  it "registers an object" do
10
10
  subject.add(:my_key, Object)
11
11
  expect(subject.for(:my_key)).to eq Object
12
12
  end
13
13
  end
14
14
 
15
- describe '#for' do
15
+ describe '.for' do
16
16
  it "returns the registered object" do
17
17
  subject.add(:my_key, Object)
18
18
  expect(subject.for(:my_key)).to eq Object
19
19
  end
20
20
  end
21
+
22
+ describe '.scope_storage' do
23
+ it 'supports the change of scope storage' do
24
+ expect {subject.scope_storage(Yaoc::Helper::ThreadLocalStorage)}.not_to raise_error
25
+ end
26
+
27
+ end
28
+
21
29
  end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yaoc::OneToManyMapperChain do
4
+
5
+ subject{
6
+ Yaoc::OneToManyMapperChain.new(first_mapper, second_mapper)
7
+ }
8
+
9
+ let(:first_mapper){
10
+ Yaoc::ObjectMapper.new(new_user_class, old_user_class).tap do |mapper|
11
+ mapper.add_mapping do
12
+ fetcher :public_send
13
+ rule to: :id,
14
+ from: :o_id
15
+ end
16
+ end
17
+ }
18
+
19
+ let(:second_mapper){
20
+ Yaoc::ObjectMapper.new(new_user_class, old_user_class).tap do |mapper|
21
+ mapper.add_mapping do
22
+ fetcher :public_send
23
+ rule to: :names,
24
+ from: :o_names
25
+ end
26
+ end
27
+ }
28
+
29
+ let(:new_user_class){
30
+ Yaoc::Helper::StructHE(:id, :names)
31
+ }
32
+
33
+ let(:old_user_class){
34
+ Yaoc::Helper::StructHE(:o_id, :o_names)
35
+ }
36
+
37
+ let(:existing_old_user){
38
+ old_user_class.new(
39
+ o_id: 'existing_user_2',
40
+ o_names: ['first_name', 'second_name']
41
+ )
42
+ }
43
+
44
+ let(:existing_user){
45
+ new_user_class.new(
46
+ id: 'existing_user_2',
47
+ names: ['first_name', 'second_name']
48
+ )
49
+ }
50
+
51
+ describe '.new' do
52
+ subject{
53
+ Yaoc::ManyToOneMapperChain
54
+ }
55
+
56
+ it 'converts symbols into converter' do
57
+ registry = double('registry')
58
+
59
+ expect(registry).to receive(:for).with(:one)
60
+ expect(registry).to receive(:for).with(:two)
61
+ expect(registry).to receive(:for).with(:three)
62
+
63
+ subject.stub(registry: registry)
64
+
65
+ subject.new(:one, :two, :three)
66
+ end
67
+ end
68
+
69
+ describe '#load_all' do
70
+ it 'converts one input objects into multiple result object' do
71
+ converted_users = subject.load_all(existing_old_user)
72
+
73
+ expect(converted_users[0].id).to eq 'existing_user_2'
74
+ expect(converted_users[1].names).to eq ['first_name', 'second_name']
75
+ end
76
+
77
+ it 'fills an existing objects' do
78
+ user1 = new_user_class.new
79
+ user2 = new_user_class.new
80
+
81
+ converted_users = subject.load_all(existing_old_user, [user1, user2])
82
+
83
+ expect(converted_users[0].id).to eq 'existing_user_2'
84
+ expect(converted_users[1].names).to eq ['first_name', 'second_name']
85
+
86
+ expect(converted_users[0].object_id).to eq user1.object_id
87
+ expect(converted_users[1].object_id).to eq user2.object_id
88
+ end
89
+ end
90
+
91
+
92
+ describe '#dump_all' do
93
+ it 'converts one input object into multiple result object' do
94
+ converted_users = subject.dump_all(existing_user)
95
+
96
+ expect(converted_users[0].o_id).to eq 'existing_user_2'
97
+ expect(converted_users[1].o_names).to eq ['first_name', 'second_name']
98
+ end
99
+
100
+ it 'fills an existing objects' do
101
+ user1 = old_user_class.new
102
+ user2 = old_user_class.new
103
+ converted_users = subject.dump_all(existing_user, [user1, user2])
104
+
105
+ expect(converted_users[0].o_id).to eq 'existing_user_2'
106
+ expect(converted_users[1].o_names).to eq ['first_name', 'second_name']
107
+
108
+ expect(converted_users[0].object_id).to eq user1.object_id
109
+ expect(converted_users[1].object_id).to eq user2.object_id
110
+ end
111
+ end
112
+
113
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter Späth
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-31 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -217,13 +217,15 @@ files:
217
217
  - lib/yaoc/converter_builder.rb
218
218
  - lib/yaoc/helper/scope.rb
219
219
  - lib/yaoc/helper/struct_hash_constructor.rb
220
+ - lib/yaoc/helper/thread_global_storage.rb
220
221
  - lib/yaoc/helper/thread_local_storage.rb
221
222
  - lib/yaoc/helper/to_proc_delegator.rb
222
- - lib/yaoc/mapper_chain.rb
223
+ - lib/yaoc/many_to_one_mapper_chain.rb
223
224
  - lib/yaoc/mapper_registry.rb
224
225
  - lib/yaoc/mapping_base.rb
225
226
  - lib/yaoc/mapping_to_class.rb
226
227
  - lib/yaoc/object_mapper.rb
228
+ - lib/yaoc/one_to_many_mapper_chain.rb
227
229
  - lib/yaoc/strategies/to_array_mapping.rb
228
230
  - lib/yaoc/strategies/to_hash_mapping.rb
229
231
  - lib/yaoc/transformation_command.rb
@@ -232,6 +234,7 @@ files:
232
234
  - spec/acceptance/fill_existing_objects_spec.rb
233
235
  - spec/acceptance/map_multiple_objects_to_one_in_a_chain_spec.rb
234
236
  - spec/acceptance/map_objects_spec.rb
237
+ - spec/acceptance/map_one_object_to_many_in_a_chain_spec.rb
235
238
  - spec/acceptance/map_to_objects_using_other_converters_spec.rb
236
239
  - spec/acceptance/map_to_objects_with_lazy_loading_spec.rb
237
240
  - spec/acceptance/map_to_objects_with_positional_constructors_spec.rb
@@ -242,13 +245,15 @@ files:
242
245
  - spec/unit/lib/yaoc/converter_builder_spec.rb
243
246
  - spec/unit/lib/yaoc/helper/scope_spec.rb
244
247
  - spec/unit/lib/yaoc/helper/struct_hash_constructor_spec.rb
248
+ - spec/unit/lib/yaoc/helper/thread_global_storage_spec.rb
245
249
  - spec/unit/lib/yaoc/helper/thread_local_storage_spec.rb
246
250
  - spec/unit/lib/yaoc/helper/to_proc_delegator_spec.rb
247
- - spec/unit/lib/yaoc/mapper_chain_spec.rb
251
+ - spec/unit/lib/yaoc/many_to_one_mapper_chain_spec.rb
248
252
  - spec/unit/lib/yaoc/mapper_registry_spec.rb
249
253
  - spec/unit/lib/yaoc/mapping_base_spec.rb
250
254
  - spec/unit/lib/yaoc/mapping_to_class_spec.rb
251
255
  - spec/unit/lib/yaoc/object_mapper_spec.rb
256
+ - spec/unit/lib/yaoc/one_to_many_mapper_chain_spec.rb
252
257
  - spec/unit/lib/yaoc/strategies/to_array_mapping_spec.rb
253
258
  - spec/unit/lib/yaoc/strategies/to_hash_mapping_spec.rb
254
259
  - spec/unit/lib/yaoc/transformation_command_spec.rb
@@ -282,6 +287,7 @@ test_files:
282
287
  - spec/acceptance/fill_existing_objects_spec.rb
283
288
  - spec/acceptance/map_multiple_objects_to_one_in_a_chain_spec.rb
284
289
  - spec/acceptance/map_objects_spec.rb
290
+ - spec/acceptance/map_one_object_to_many_in_a_chain_spec.rb
285
291
  - spec/acceptance/map_to_objects_using_other_converters_spec.rb
286
292
  - spec/acceptance/map_to_objects_with_lazy_loading_spec.rb
287
293
  - spec/acceptance/map_to_objects_with_positional_constructors_spec.rb
@@ -292,13 +298,15 @@ test_files:
292
298
  - spec/unit/lib/yaoc/converter_builder_spec.rb
293
299
  - spec/unit/lib/yaoc/helper/scope_spec.rb
294
300
  - spec/unit/lib/yaoc/helper/struct_hash_constructor_spec.rb
301
+ - spec/unit/lib/yaoc/helper/thread_global_storage_spec.rb
295
302
  - spec/unit/lib/yaoc/helper/thread_local_storage_spec.rb
296
303
  - spec/unit/lib/yaoc/helper/to_proc_delegator_spec.rb
297
- - spec/unit/lib/yaoc/mapper_chain_spec.rb
304
+ - spec/unit/lib/yaoc/many_to_one_mapper_chain_spec.rb
298
305
  - spec/unit/lib/yaoc/mapper_registry_spec.rb
299
306
  - spec/unit/lib/yaoc/mapping_base_spec.rb
300
307
  - spec/unit/lib/yaoc/mapping_to_class_spec.rb
301
308
  - spec/unit/lib/yaoc/object_mapper_spec.rb
309
+ - spec/unit/lib/yaoc/one_to_many_mapper_chain_spec.rb
302
310
  - spec/unit/lib/yaoc/strategies/to_array_mapping_spec.rb
303
311
  - spec/unit/lib/yaoc/strategies/to_hash_mapping_spec.rb
304
312
  - spec/unit/lib/yaoc/transformation_command_spec.rb