Sha256: 5a5134fdd2463eb2249fe1b1ad096b9febd2fb4963c152cb3c74b7fcf9ff1ce8
Contents?: true
Size: 686 Bytes
Versions: 3
Compression:
Stored size: 686 Bytes
Contents
require 'facets/functor' module Kernel # Yield self -or- return self. # # "a".ergo.upcase #=> "A" # nil.ergo.foobar #=> nil # # "a".ergo{ |o| o.upcase } #=> "A" # nil.ergo{ |o| o.foobar } #=> nil # # This is like #tap, but tap yields self -and- returns self. # # CREDIT Daniel DeLorme def ergo &b if block_given? b.arity == 1 ? yield(self) : instance_eval(&b) else self end end end class NilClass # Compliments Kernel#ergo. # # "a".ergo{ |o| o.upcase } #=> "A" # nil.ergo{ |o| o.bar } #=> nil # # CREDIT Daniel DeLorme def ergo @_ergo ||= Functor.new{ nil } @_ergo unless block_given? end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
facets-2.1.1 | lib/core/facets/kernel/ergo.rb |
facets-2.1.2 | lib/core/facets/kernel/ergo.rb |
facets-2.1.3 | lib/core/facets/kernel/ergo.rb |