Class: Enumerator::Transform

Inherits:
Enumerator show all
Defined in:
lib/enumerable_lz/transform.rb,
lib/enumerable_lz/transform_mrb.rb

Overview

Lazy Transform Enumerator

Instance Method Summary collapse

Constructor Details

#initialize(obj) { ... } ⇒ Transform

Returns a new instance of Transform.

Parameters:

Yields:

  • transform block.



9
10
11
12
13
14
15
16
17
18
# File 'lib/enumerable_lz/transform.rb', line 9

def initialize obj, &transformer
  @org_enum = obj
  super() do |y|
    the_transformer = compile_transformer
    obj.each do |el|
      y << the_transformer[el]
    end
  end
  transform! &transformer if block_given?
end

Instance Method Details

#transform(&block) ⇒ Object

override


33
34
35
36
37
38
39
40
# File 'lib/enumerable_lz/transform.rb', line 33

def transform &block
  # clone.transform! &block
  cp = Transform.new @org_enum
  @transformer.each do |org_block|
    cp.transform! &org_block
  end unless @transformer.nil?
  cp.transform! &block
end

#transform! {|el| ... } ⇒ Transform

Apply another transformer block and return self. (bang method of transform)

Yields:

  • (el)

    transform block.

Returns:



23
24
25
26
27
# File 'lib/enumerable_lz/transform.rb', line 23

def transform! &block
  @transformer||=[]
  @transformer << block if block_given?
  self
end

#with_index(offset = 0, &block) ⇒ Object

override


52
53
54
55
56
# File 'lib/enumerable_lz/transform.rb', line 52

def with_index offset=0, &block
  src_enum = @transformer.nil? || @transformer.size.zero? ? @org_enum : self
  block ||= Proc.new{|el, i|[el, i]}
  TransformWithIndex.new src_enum, offset, &block
end