README.md in yaoc-0.0.8 vs README.md in yaoc-0.0.9
- old
+ new
@@ -16,11 +16,11 @@
$ gem install yaoc
## Usage
-Uptodate doc's look into the specs.
+For uptodate doc's take a look into the specs.
### The resulting classes have hash enabled constructors?
```ruby
@@ -37,16 +37,16 @@
fetcher :public_send
rule to: :role, from: :r_role
rule to: :firstname,
from: :fullname,
- converter: ->(source, result){ fill_result_with_value(result, :firstname, source.fullname.split().first) },
- reverse_converter: ->(source, result){ fill_result_with_value(result, :fullname, "#{source.firstname} #{source.lastname}") }
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :firstname, source.fullname.split().first) },
+ reverse_converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :fullname, "#{source.firstname} #{source.lastname}") }
rule to: :lastname,
from: :fullname,
- converter: ->(source, result){ fill_result_with_value(result, :lastname, source.fullname.split().last ) },
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :lastname, source.fullname.split().last ) },
reverse_converter: ->(source, result){ result }
rule to: :id
end
end
@@ -102,16 +102,16 @@
fetcher :public_send
rule to: :role, from: :r_role
rule to: :firstname,
from: :fullname,
- converter: ->(source, result){ fill_result_with_value(result, :firstname, source.fullname.split().first ) },
- reverse_converter: ->(source, result){ fill_result_with_value(result, :fullname, "#{source.firstname} #{source.lastname}") }
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :firstname, source.fullname.split().first ) },
+ reverse_converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :fullname, "#{source.firstname} #{source.lastname}") }
rule to: :lastname,
from: :fullname,
- converter: ->(source, result){ fill_result_with_value(result, :lastname, source.fullname.split().last) },
+ converter: ->(source, result){ Yaoc::TransformationCommand.fill_result_with_value(result, :lastname, source.fullname.split().last) },
reverse_converter: ->(source, result){ result }
rule to: :id
end
end
@@ -145,11 +145,21 @@
puts "\n" * 5
OldUser3 = Struct.new(:id, :fullname, :r_role)
User3 = Struct.new(:id, :firstname, :lastname, :role)
+# alternative to proc for converter
+converter = Yaoc::TransformationCommand.create(to: 1,
+ from: :fullname,
+ deferred: false,
+ fetcher_proc: ->(source, fetcher, from){source.fullname.split().first} )
+reverse_converter = Yaoc::TransformationCommand.create(to: 1,
+ from: :first_and_lastname,
+ deferred: false,
+ fetcher_proc: ->(source, fetcher, from){ "#{source.firstname} #{source.lastname}"} )
+
mapper = Yaoc::ObjectMapper.new(User3, OldUser3).tap do |mapper|
mapper.add_mapping do
fetcher :public_send
strategy :to_array_mapping
@@ -159,12 +169,12 @@
reverse_to: 0, reverse_from: :id
rule to: 1,
from: :fullname,
- converter: ->(source, result){ fill_result_with_value(result, 1, source.fullname.split().first) },
- reverse_converter: ->(source, result){ fill_result_with_value(result, 1, "#{source.firstname} #{source.lastname}") }
+ converter: converter,
+ reverse_converter: reverse_converter
rule to: 2,
from: :fullname,
converter: ->(source, result){ result[2] = source.fullname.split().last },
@@ -184,9 +194,10 @@
new_user3.firstname = "no"
new_user3.lastname = "name"
puts mapper.dump(new_user3)
+
#<struct OldUser3 id=1, fullname="myfirst mysecond", r_role="admin">
#<struct User3 id=1, firstname="myfirst", lastname="mysecond", role="admin">
#<struct OldUser3 id=1, fullname="no name", r_role="admin">