Protects against infinite recursion by never yielding with the same object more than once.
Guard against recursively calling a block with the same object
@example
recursion_guard = IceNine::RecursionGuard::ObjectSet.new recursion_guard.guard(object) do logic_which_may_be_recursively_called_with_object(recursion_guard) end
@param [Object] object
@return [Object]
# File lib/ice_nine/support/recursion_guard.rb, line 31 def guard(object) caller_object_id = object.__id__ return object if @object_ids.key?(caller_object_id) @object_ids[caller_object_id] = nil yield end
Generated with the Darkfish Rdoc Generator 2.