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">