Module: Denumerable

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

Overview

Denumerable

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.

Instance Method Summary collapse

Instance Method Details

#mapObject Also known as: collect



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

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

#rejectObject



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

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

#selectObject Also known as: find_all



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

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



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

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



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

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