Sha256: 7ec1afa017bb733c027d28946fe1130bcb0d9b29faca4ead1349b8af7b2bac34

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# Transformable

Lets you manipulate data as it's being set on an object without a lot of setter method boilerplate

## Installation

Add this line to your application's Gemfile:

    gem 'transformable'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install transformable

## Usage

Use the `clean` method on your objects to create a setter method that manipulates inputs:

```ruby
class User < ActiveRecord::Base
  include Transformable
  clean(:email) {|e| e.downcase}
end

> u = User.new(email: "foo@BAR.com")
> u.email
 => "foo@bar.com"
```

By default, nil values won't be passed through to the block. Use the skip_nil option if you want them:

```ruby
class User < ActiveRecord::Base
  include Transformable
  clean(:email, :skip_nil => false) {|e| e || "example@foobar.com"}
end

> u = User.new(email: "email@email.com")
> u.email = nil
> u.email
 => "example@foobar.com"
```

I use regexes for removing forbidden characters:

```ruby
class User < ActiveRecord::Base
  include Transformable
  clean(:email) {|e| e.gsub(/\s/, "")} # remove spaces
end

> u = User.new(email: "f o o @ b a r . c o m")
> u.email
 => "foo@bar.com"
```

Transformable works on pure ruby objects as well as ActiveRecord objects!

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
transformable-1.0.0 README.md