Module: Denumerable

Included in:
Denumerator
Defined in:
lib/core/facets/denumerable.rb

Overview

Classes which include Denumerable will get versions of map, select, and so on, which return a Denumerator, so that they work horizontally without creating intermediate arrays.

Author:

  • Brian Candler

  • Trans

Instance Method Summary collapse

Instance Method Details

#mapObject Also known as: collect


14
15
16
17
18
19
20
# File 'lib/core/facets/denumerable.rb', line 14

def map
  Denumerator.new do |output|
    each do |*input|
      output.yield yield(*input)
    end
  end
end

#rejectObject


34
35
36
37
38
39
40
# File 'lib/core/facets/denumerable.rb', line 34

def reject
  Denumerator.new do |output|
    each do |*input|
      output.yield(*input) unless yield(*input)
    end
  end
end

#selectObject Also known as: find_all


24
25
26
27
28
29
30
# File 'lib/core/facets/denumerable.rb', line 24

def select
  Denumerator.new do |output|
    each do |*input|
      output.yield(*input) if yield(*input)
    end
  end
end

#skip(n) ⇒ Object

Skip the first n items in the list


55
56
57
58
59
60
61
62
63
# File 'lib/core/facets/denumerable.rb', line 55

def skip(n)
  Denumerator.new do |output|
    count = 0
    each do |*input|
      output.yield(*input) if count >= n
      count += 1
    end
  end
end

#take(n) ⇒ Object

Limit to the first n items in the list


43
44
45
46
47
48
49
50
51
52
# File 'lib/core/facets/denumerable.rb', line 43

def take(n)
  Denumerator.new do |output|
    count = 0
    each do |*input|
      break if count >= n
      output.yield(*input)
      count += 1
    end
  end
end