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
=> nilIs 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
=> nilOr this Ruby on Rails (ActiveSupport):
jedi = nil
jedi.tap do |yoda|
yoda.try(:height, 1)
end
=> nilTo avoid this:
jedi = nil
jedi.tap do |yoda|
yoda.height = 1
end
NoMethodError: undefined method `height=' for nil:NilClassYou can now write this instead:
require "tapdance"
jedi = nil
jedi.tap do |yoda|
yoda.height = 1
end
=> nilYep, 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
- Fork it ( https://github.com/olivierlacan/tapdance/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request