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.
Instance Method Summary collapse
- #map ⇒ Object (also: #collect)
- #reject ⇒ Object
- #select ⇒ Object (also: #find_all)
-
#skip(n) ⇒ Object
Skip the first n items in the list.
-
#take(n) ⇒ Object
Limit to the first n items in the list.
Instance Method Details
#map ⇒ Object 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 |
#reject ⇒ Object
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 |
#select ⇒ Object 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 |