Sha256: 621af0a193e66d0d529e494c8fddf07b72c956eb2ca8ce0bab4675e765907351
Contents?: true
Size: 802 Bytes
Versions: 6
Compression:
Stored size: 802 Bytes
Contents
class ::Enumerator class self::Chain < self def initialize(*enums) @enums = enums @iterated = [] @object = self end def each(*args, &block) return to_enum(:each, *args) { size } unless block_given? @enums.each do |enum| @iterated << enum enum.each(*args, &block) end self end def size(*args) accum = 0 @enums.each do |enum| size = enum.size(*args) return size if [nil, ::Float::INFINITY].include? size accum += size end accum end def rewind @iterated.reverse_each do |enum| enum.rewind if enum.respond_to? :rewind end @iterated = [] self end def inspect "#<Enumerator::Chain: #{@enums.inspect}>" end end end
Version data entries
6 entries across 6 versions & 1 rubygems