Sha256: b6e845cd297860a66f94f1754a4d3f5444e3b2947ad68300ebd414daab12846d

Contents?: true

Size: 943 Bytes

Versions: 14

Compression:

Stored size: 943 Bytes

Contents

# frozen_string_literal: true

# Refine Array seprately, 'cause refining modules is vulnerable to prepend:
# - https://bugs.ruby-lang.org/issues/13446
RubyNext::Core.patch Enumerable, method: :filter_map, version: "2.7", refineable: [Enumerable, Array] do
  <<~RUBY
    def filter_map
      if block_given?
        result = []
        each do |element|
          res = yield element
          result << res if res
        end
        result
      else
        Enumerator.new do |yielder|
          result = []
          each do |element|
            res = yielder.yield element
            result << res if res
          end
          result
        end
      end
    end
  RUBY
end

RubyNext::Core.patch Enumerator::Lazy, method: :filter_map, version: "2.7" do
  <<~RUBY
    def filter_map
      Enumerator::Lazy.new(self) do |yielder, *values|
        result = yield(*values)
        yielder << result if result
      end
    end
  RUBY
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
ruby-next-core-0.9.2 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.9.1 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.9.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.9.0.pre lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.8.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.7.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.6.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.5.3 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.5.2 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.5.1 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.5.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.4.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-0.3.0 lib/ruby-next/core/enumerable/filter_map.rb
ruby-next-core-0.3.0 lib/ruby-next/core/enumerable/filter_map.rb