Module: Kernel
- Defined in:
- lib/with.rb
Overview
–
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyleft meh. [http://meh.paranoid.pk | [email protected]]
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
++
Instance Method Summary collapse
Instance Method Details
#with(*objects, &block) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/with.rb', line 14 def with (*objects, &block) result, exception = nil begin result = block.call *objects.map {|object| if object.respond_to? :__enter__ object.__enter__ else object end } rescue Exception => e exception = e end raise exception if objects.none? {|object| next unless object.respond_to?(:__exit__) if object.method(:__exit__).arity == 0 object.__exit__ && false else object.__exit__(exception) end } && exception result end |