Sha256: d780c9c556f234bf3be91905101d791eeb0b0c29df4ace13773b8f45a79ef385
Contents?: true
Size: 748 Bytes
Versions: 7
Compression:
Stored size: 748 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, # where as #ergo yields self buit return the result. # # 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
7 entries across 6 versions & 1 rubygems