Class: Enumerable::Transform

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

Instance Method Summary collapse

Constructor Details

#initialize(obj, &transformer) ⇒ Transform

Returns a new instance of Transform.



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

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

#each(&block) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/enumerable_lz/transform_18.rb', line 13

def each &block
  return self unless block_given?
  the_transformer = compile_transformer
  @org_enum.each do |el|
    block.call the_transformer[el]
  end
  self
end

#transform(&block) ⇒ Object

override


26
27
28
29
30
31
32
33
# File 'lib/enumerable_lz/transform.rb', line 26

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!(&block) ⇒ Object



19
20
21
22
23
# File 'lib/enumerable_lz/transform.rb', line 19

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