Class: Enumerator::Transform
- Inherits:
-
Enumerator
- Object
- Enumerator
- Enumerator::Transform
- Defined in:
- lib/enumerable_lz/transform.rb,
lib/enumerable_lz/transform_mrb.rb
Overview
Lazy Transform Enumerator
Instance Method Summary collapse
-
#initialize(obj) { ... } ⇒ Transform
constructor
A new instance of Transform.
-
#transform(&block) ⇒ Object
[override].
-
#transform! {|el| ... } ⇒ Transform
Apply another transformer block and return self.
-
#with_index(offset = 0, &block) ⇒ Object
[override].
Constructor Details
#initialize(obj) { ... } ⇒ Transform
Returns a new instance of Transform.
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)
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 |