module OnebusawaySDK::Internal::Util
def fused_enum(enum, external: false, &close)
-
(Enumerable
-
Parameters:
-
close
(Proc
) -- -
external
(Boolean
) -- -
enum
(Enumerable
) --
Other tags:
- Api: - private
def fused_enum(enum, external: false, &close) fused = false iter = Enumerator.new do |y| next if fused fused = true if external loop { y << enum.next } else enum.each(&y) end ensure close&.call close = nil end iter.define_singleton_method(:rewind) do fused = true self end iter end