Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 55 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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.