Class: Cranium::DataTransformer

Inherits:
Object
  • Object
show all
Defined in:
lib/cranium/data_transformer.rb

Instance Method Summary collapse

Constructor Details

#initialize(source, target) ⇒ DataTransformer

Returns a new instance of DataTransformer.



5
6
7
8
9
10
# File 'lib/cranium/data_transformer.rb', line 5

def initialize(source, target)
  @source, @target = source, target
  @index = Cranium::Transformation::Index.new
  @target_fields = @target.fields.keys
  @record = Cranium::TransformationRecord.new @source.fields.keys, @target_fields
end

Instance Method Details

#transform(&block) ⇒ Object

Raises:

  • (StandardError)


14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/cranium/data_transformer.rb', line 14

def transform(&block)
  raise StandardError, "Source definition '#{@target.name}' cannot overrride the file name because it is a transformation target" if @target.file_name_overriden?

  CSV.open "#{Cranium.configuration.upload_path}/#{@target.file}", "w:#{@target.encoding}", csv_write_options_for(@target) do |target_file|
    @target_file = target_file
    @source.files.each do |input_file|
      transform_input_file File.join(Cranium.configuration.upload_path, input_file), block
    end
  end

  @target.resolve_files
end