Class: Array

Inherits:
Object show all
Defined in:
lib/sane/enumerable-extra.rb

Instance Method Summary collapse

Instance Method Details

#map(method = nil, *args, &block) ⇒ Object Also known as: collect, map_by

Returns a new array containing the results of running block once for every element in the array.

Examples:

array = ['foo', 'bar']

# No arguments
array.map(:capitalize) => ['Foo', 'Bar']

# With arguments
array.map(:+, 'x') => ['foox', 'barx']

# With arguments and a block
array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']

– The Array class actually has its own implementation of the map method, hence the duplication.



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/sane/enumerable-extra.rb', line 98

def map(method=nil, *args, &block)
   if method
      array  = []
      method = method.to_sym unless method.is_a?(Symbol)

      each{ |obj|
         temp = obj.send(method, *args)
         if block
            array << block.call(temp)
         else
            array << temp
         end
      }
      array
   else
      old_map(&block)
   end
end

#map!(method = nil, *args, &block) ⇒ Object Also known as: collect!

Same as Array#map, but modifies the receiver in place. Also note that a block is not required. If no block is given, an array of values is returned instead



121
122
123
# File 'lib/sane/enumerable-extra.rb', line 121

def map!(method=nil, *args, &block)
   self.replace(map(method, *args, &block))
end

#old_mapObject



73
# File 'lib/sane/enumerable-extra.rb', line 73

alias old_map map

#old_map!Object



74
# File 'lib/sane/enumerable-extra.rb', line 74

alias old_map! map!