Sha256: d2e843f3c53e9e860f24989ffeee301d1a4de3218661eee82c2c4c60453d0ec0

Contents?: true

Size: 936 Bytes

Versions: 47

Compression:

Stored size: 936 Bytes

Contents

unless Enumerable.method_defined? :slice_before
  require 'backports/tools/arguments'
  require 'backports/1.9.1/enumerator/new'

  module Enumerable
    def slice_before(arg = Backports::Undefined, &block)
      if block_given?
        has_init = !(arg.equal? Backports::Undefined)
      else
        raise ArgumentError, "wrong number of arguments (0 for 1)" if arg.equal? Backports::Undefined
        block = Proc.new{|elem| arg === elem }
      end
      Enumerator.new do |yielder|
        init = arg.dup if has_init
        accumulator = nil
        each do |elem|
          start_new = has_init ? block.call(elem, init) : block.call(elem)
          if start_new
            yielder.yield accumulator if accumulator
            accumulator = [elem]
          else
            accumulator ||= []
            accumulator << elem
          end
        end
        yielder.yield accumulator if accumulator
      end
    end
  end
end

Version data entries

47 entries across 47 versions & 4 rubygems

Version Path
backports-3.25.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.24.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.24.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.23.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.22.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.22.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.21.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.20.2 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.20.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.20.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.19.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.18.2 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.18.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.18.0 lib/backports/1.9.2/enumerable/slice_before.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/backports-3.12.0/lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.17.2 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.17.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.17.0 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.16.1 lib/backports/1.9.2/enumerable/slice_before.rb
backports-3.16.0 lib/backports/1.9.2/enumerable/slice_before.rb