Sha256: 6c95c565b707a238f50136d71fab96836e6af36e3ec84f3791fc6d55f9d7c07d

Contents?: true

Size: 733 Bytes

Versions: 1

Compression:

Stored size: 733 Bytes

Contents

require 'jinx/helpers/collection'

module Jinx
  # This Transformer helper class applies a transformer block to a base enumeration.
  class Transformer
    include Enumerable, Collection

    def initialize(enum=[], &transformer)
      @base = enum
      @xfm = transformer
    end

    # Sets the base Enumerable on which this Transformer operates and returns this transformer, e.g.:
    #  transformer = Transformer.new { |n| n * 2 }
    #  transformer.on([1, 2, 3]).to_a #=> [2, 4, 6]
    def on(enum)
      @base = enum
      self
    end

    # Calls the block on each item after this Transformer's transformer block is applied.
    def each
      @base.each { |item| yield(item.nil? ? nil : @xfm.call(item)) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jinx-2.1.4 lib/jinx/helpers/transformer.rb