tapdance

With tapdance you can call tap on nil and it will swallow gamma rays like a collapsing wormhome!


License
MIT
Install
gem install tapdance -v 0.1.1

Documentation

Tapdance Gem Version Dependencies Code Climate License

Tapdance makes Object#tap dance with nil.

What?!

I mean it totally dances around nil and doesn't execute a block argument passed to nil#tap so that you don't have to check for nil inside of the block passed to tap.

It looks like this:

nil.tap do |yoda|
  yoda.dance!
end
=> nil

Is this a good idea?

Nope.

Installation

Add this line to your application's Gemfile:

gem 'tapdance'

And then execute:

$ bundle

Or install it yourself as:

$ gem install tapdance

Usage

Instead of writing this Ruby:

jedi = nil
jedi.tap do |yoda|
  yoda && yoda.height = 1
end
=> nil

Or this Ruby on Rails (ActiveSupport):

jedi = nil
jedi.tap do |yoda|
  yoda.try(:height, 1)
end
=> nil

To avoid this:

jedi = nil
jedi.tap do |yoda|
  yoda.height = 1
end
NoMethodError: undefined method `height=' for nil:NilClass

You can now write this instead:

require "tapdance"
jedi = nil
jedi.tap do |yoda|
  yoda.height = 1
end
=> nil

Yep, there's no height method on yoda. Probably because yoda is nil and it would be weird if nothingness had a height, wouldn't it?

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it ( https://github.com/olivierlacan/tapdance/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request