[ANN] return_bang 1.0 Released

return_bang version 1.0 has been released!

* http://docs.seattlerb.org/return_bang
* https://github.com/drbrain/return_bang

return_bang implements non-local exits from methods. Use return_bang to exit
back to a processing loop from deeply nested code, or just to confound your
enemies *and* your friends! What could possibly go wrong?

== Features

* Implements non-local exits for methods
* Nestable
* Named and stack-based exit points, go exactly where you need to be
* Ignores pesky ensure blocks for when you really, really need to return

== Synopsis

  require 'return_bang/everywhere'

  def some_method
    deeply_nested
    # never reached
  end

  def deeply_nested
    return!
  end

  return_here do
    some_method
  end
  # resumes here

== Install

  sudo gem install return_bang

Where is this different from the builtin catch/throw mechanism?

···

On 21.12.2011 01:53, Eric Hodel wrote:

require 'return_bang/everywhere'

def some_method deeply_nested # never reached end

def deeply_nested return! end

return_here do some_method end # resumes here

== Install

sudo gem install return_bang

=========================================
def some_method
  deeply_nested
  # never reached
end

def deeply_nested
  throw :foo
end

catch(:foo) do
  some_method
end
# resumes here

Vale,
Marvin

Marvin Gülker wrote in post #1037733:

···

On 21.12.2011 01:53, Eric Hodel wrote:

sudo gem install return_bang

Where is this different from the builtin catch/throw mechanism?

It skips all ensure clauses in the call stack; throw() does not.

--
Posted via http://www.ruby-forum.com/\.

Ah, I see. Thank you.

Vale,
Marvin

···

On 21.12.2011 20:54, Suraj Kurapati wrote:

Marvin Gülker wrote in post #1037733:

On 21.12.2011 01:53, Eric Hodel wrote:

sudo gem install return_bang

Where is this different from the builtin catch/throw mechanism?

It skips all ensure clauses in the call stack; throw() does not.