Sha256: a3632045da0c5bc30cef67416d16ca4e816896418378a9f6c51a2009a868eeb1
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
require 'facets/enumerator' #require 'facets/enumerable/take' # = Denumerable # # Classes which include Enumerable::Filterable will get versions # of map, select etc. which return a Filter, so that they work # horizontally without creating intermediate arrays. # module Denumerable # def map Denumerator.new do |output| each do |*input| output.yield yield(*input) end end end alias :collect :map # def select Denumerator.new do |output| each do |*input| output.yield(*input) if yield(*input) end end end alias :find_all :select # def reject Denumerator.new do |output| each do |*input| output.yield(*input) unless yield(*input) end end end # Limit to the first n items in the list def take(n) Denumerator.new do |output| count = 0 each do |*input| break if count >= n output.yield(*input) count += 1 end end end # Skip the first n items in the list def skip(n) Denumerator.new do |output| count = 0 each do |*input| output.yield(*input) if count >= n count += 1 end end end # TODO: add more methods, e.g. grep, take_while etc. end # = Denumerator # # A class like Enumerator, but which has 'lazy' versions of map, select etc. # class Denumerator < Enumerator include Denumerable end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
facets-2.8.0 | lib/core/facets/denumerable.rb |
facets-2.7.0 | lib/core/facets/denumerable.rb |