Class: Enumerable::Enumerator::Transform
- Inherits:
-
Enumerable::Enumerator
- Object
- Enumerable::Enumerator
- Enumerable::Enumerator::Transform
- Defined in:
- lib/enumerable_lz/transform_18.rb
Direct Known Subclasses
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(obj, &transformer) ⇒ Transform
constructor
A new instance of Transform.
-
#transform(&block) ⇒ Object
[override].
- #transform!(&block) ⇒ Object
-
#with_index(offset = 0, &block) ⇒ Object
[override].
Constructor Details
#initialize(obj, &transformer) ⇒ Transform
Returns a new instance of Transform.
5 6 7 8 |
# File 'lib/enumerable_lz/transform_18.rb', line 5 def initialize obj, &transformer @org_enum = obj transform! &transformer if block_given? end |
Instance Method Details
#each(&block) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/enumerable_lz/transform_18.rb', line 10 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_18.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_18.rb', line 19 def transform! &block @transformer||=[] @transformer << block if block_given? self end |
#with_index(offset = 0, &block) ⇒ Object
- override
36 37 38 39 40 |
# File 'lib/enumerable_lz/transform_18.rb', line 36 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 |