Sha256: 5dce175a418a95444a0a072004cc2c0d2aeb1fa71c3e2fba4602baed7b454a14

Contents?: true

Size: 1012 Bytes

Versions: 15

Compression:

Stored size: 1012 Bytes

Contents

require 'facets/more/functor'

module Enumerable

  # Returns an elementwise Functor. This allows
  # you to map a method on to every element.
  #
  #   [1,2,3].every + 3           #=> [4,5,6]
  #
  #   ['a','b','c'].every.upcase  #=> ['A','B','C']
  #
  def every
    Functor.new do |op,*args|
      self.collect{ |a| a.send(op,*args) }
    end
  end

end


class Array

  # In place version of #every.
  def every!
    Functor.new do |op,*args|
      self.replace( self.collect{ |a| a.send(op,*args) } )
    end
  end

end


#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCEnumerable < Test::Unit::TestCase

    def test_every_1
      a = [1,2,3]
      assert_equal( [4,5,6], a.every + 3 )
      assert_equal( [0,1,2], a.every - 1 )
      assert_equal( ['1','2','3'], a.every.to_s )
    end

    def test_every_2
      a = [1,2,3]
      a.every! + 3
      assert_equal( [4,5,6], a )
    end

  end

=end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
facets-1.2.1 lib/facets/core/enumerable/every.rb
facets-1.3.0 lib/facets/core/enumerable/every.rb
facets-1.3.3 lib/facets/core/enumerable/every.rb
facets-1.3.2 lib/facets/core/enumerable/every.rb
facets-1.3.1 lib/facets/core/enumerable/every.rb
facets-1.4.2 lib/facets/core/enumerable/every.rb
facets-1.4.0 lib/facets/core/enumerable/every.rb
facets-1.4.1 lib/facets/core/enumerable/every.rb
facets-1.4.3 lib/facets/core/enumerable/every.rb
facets-1.4.4 lib/facets/core/enumerable/every.rb
facets-1.4.5 lib/facets/core/enumerable/every.rb
facets-1.7.0 lib/facets/core/enumerable/every.rb
facets-1.7.30 lib/facets/core/enumerable/every.rb
facets-1.7.38 lib/facets/core/enumerable/every.rb
facets-1.7.46 lib/facets/core/enumerable/every.rb