Class: DataForge::Transformation::RubyTransformation

Inherits:
TransformationBase show all
Defined in:
lib/data_forge/transformation/ruby_transformation.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(record_reader, record_writers, &transformation_block) ⇒ RubyTransformation

Returns a new instance of RubyTransformation.



16
17
18
# File 'lib/data_forge/transformation/ruby_transformation.rb', line 16

def initialize(record_reader, record_writers, &transformation_block)
  @record_reader, @record_writers, @transformation_block = record_reader, record_writers, transformation_block
end

Class Method Details

.from_input(source_name, options = {}, &block) ⇒ Object



6
7
8
9
10
11
# File 'lib/data_forge/transformation/ruby_transformation.rb', line 6

def from_input(source_name, options = {}, &block)
  reader = File.reader_for source_name
  writers = Array(options.fetch :into, source_name).map { |target_name| File.writer_for target_name }

  new reader, writers, &block
end

Instance Method Details

#executeObject



22
23
24
25
26
27
28
29
# File 'lib/data_forge/transformation/ruby_transformation.rb', line 22

def execute
  with_writers @record_writers do |writers|
    context = RubyTransformationContext.new writers
    @record_reader.each_record do |record|
      context.instance_exec record, &@transformation_block
    end
  end
end