diff --git a/README.md b/README.md index 794dd47..0d4a3cd 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # OrderTransformer -Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/data_transformer`. To experiment with that code, run `bin/console` for an interactive prompt. +Note: This gem is in maintenance mode and not actively updated. -TODO: Delete this and the text above, and describe your gem +The order transformer transforms data from an external format to the desired target format. ## Installation @@ -12,17 +12,64 @@ Add this line to your application's Gemfile: gem 'order_transformer' ``` -And then execute: +And then run `bundle install`. - $ bundle install +## Usage -Or install it yourself as: +The gem allows you to define data transformations via a DSL like so: - $ gem install data_transformer +```ruby +OrderTransformer::DSL.define :some_shop, "v1.0" do + definition do + order as: :hash do + # The core of the transformation process is implemented by using the `transform` method. This maps the input "OrderNumber" field to the output "order_number" field. + transform "OrderNumber", to: "_order_number" + + # By default, values of input data are not required to be set. To + # require them, set `optional: false`: + transform "OrderNumber", to: "_order_number", optional: false + + # If you need to modify the input data, provide a custom transform instruction: + transform "OrderNumber", to: "_order_number", transformer: ->(order_number) { order_number.to_d } + + # The gem also comes with some default transformers that are always included. + # See `DefaultTransformers`. + # The above can be rewritten as: + transform "OrderNumber", to: "_order_number", transformer: to_d + + # Using multiple inputs is also possible: + transform "street_1", "street_2", "street_3", to: "_street", transformer: ->(street_1, street_2, street_3) { street_1 || street_2 || street_3 } + + end + end +end +``` -## Usage +You can collect your own data transformers in a plain Ruby module: + +```ruby +module MyTransformers + def presence(chain = nil) + chain ||= __create_method_chain(caller(1, 1)) + chain.add ->(value, *_args) { value.presence } + end +end +``` + +and include it in your transformer: -TODO: Write usage instructions here + +```ruby +OrderTransformer::DSL.define :some_shop, "v1.0" do + include_transformers MyTransformers + + definition do + order as: :hash do + transform "OrderNumber", to: "_order_number", transformer: presence + end + end +end +``` ## Development @@ -50,9 +97,3 @@ To install this gem onto your local machine, run `bundle exec rake install`. To - create branch from master - bump version to next pre `be gem bump -v pre --pretend` and after check `be gem bump -v pre` - merge branch (merge commit!) into development - -## Contributing - -Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/data_transformer. - -