Module: Useful::RubyExtensions::Object::FromActivesupport
- Defined in:
- lib/useful/ruby_extensions/object.rb
Instance Method Summary collapse
- #blank? ⇒ Boolean
-
#returning(value) {|value| ... } ⇒ Object
Returns
value
after yieldingvalue
to the block. -
#tap {|_self| ... } ⇒ Object
Yields
x
to the block, and then returnsx
.
Instance Method Details
#blank? ⇒ Boolean
55 56 57 |
# File 'lib/useful/ruby_extensions/object.rb', line 55 def blank? self.nil? || self.false? || (self.respond_to?(:empty?) ? self.empty? : false) end |
#returning(value) {|value| ... } ⇒ Object
Returns value
after yielding value
to the block. This simplifies the process of constructing an object, performing work on the object, and then returning the object from a method. It is a Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.
Examples
# Without returning
def foo
values = []
values << "bar"
values << "baz"
return values
end
foo # => ['bar', 'baz']
# returning with a local variable
def foo
returning values = [] do
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
# returning with a block argument
def foo
returning [] do |values|
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
95 96 97 98 |
# File 'lib/useful/ruby_extensions/object.rb', line 95 def returning(value) yield(value) value end |
#tap {|_self| ... } ⇒ Object
Yields x
to the block, and then returns x
. The primary purpose of this method is to “tap into” a method chain, in order to perform operations on intermediate results within the chain.
(1..10).tap { |x| puts "original: #{x.inspect}" }.to_a.
tap { |x| puts "array: #{x.inspect}" }.
select { |x| x%2 == 0 }.
tap { |x| puts "evens: #{x.inspect}" }.
map { |x| x*x }.
tap { |x| puts "squares: #{x.inspect}" }
110 111 112 113 |
# File 'lib/useful/ruby_extensions/object.rb', line 110 def tap yield self self end |