Class: Remi::SourceToTargetMap

Inherits:
Object
  • Object
show all
Defined in:
lib/remi/source_to_target_map.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_df, target_df = nil, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new) ⇒ SourceToTargetMap

Returns a new instance of SourceToTargetMap.



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/remi/source_to_target_map.rb', line 3

def initialize(source_df, target_df=nil, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new)
  @source_df = source_df
  @source_metadata = 

  if target_df
    @target_df = target_df
    @target_metadata = 
  else
    @target_df = @source_df
    @target_metadata = @source_metadata
  end

  reset_map
end

Class Method Details

.apply(source_df, target_df = nil, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new, &block) ⇒ Object



18
19
20
21
# File 'lib/remi/source_to_target_map.rb', line 18

def self.apply(source_df, target_df=nil, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new, &block)
  sttm = SourceToTargetMap.new(source_df, target_df, source_metadata: , target_metadata: )
  Docile.dsl_eval(sttm, &block)
end

Instance Method Details

#map(*args) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/remi/source_to_target_map.rb', line 46

def map(*args)
  

  case
  when @source_vectors.include?(nil)
    do_map_generic
  when @source_vectors.size == 1 && @transforms.size == 0
    do_map_direct_copy
  when @source_vectors.size == 1 && @target_vectors.size == 1
    do_map_single_source_and_target_vector
  else
    do_map_generic
  end
  reset_map
end

#reset_mapObject



39
40
41
42
43
44
# File 'lib/remi/source_to_target_map.rb', line 39

def reset_map
  @source_vectors = []
  @target_vectors = []
  @transforms = []
  @transform_procs = []
end

#source(*source_vectors) ⇒ Object



23
24
25
26
# File 'lib/remi/source_to_target_map.rb', line 23

def source(*source_vectors)
  @source_vectors = Array(source_vectors)
  self
end

#target(*target_vectors) ⇒ Object



34
35
36
37
# File 'lib/remi/source_to_target_map.rb', line 34

def target(*target_vectors)
  @target_vectors = Array(target_vectors)
  self
end

#transform(*transforms) ⇒ Object



28
29
30
31
32
# File 'lib/remi/source_to_target_map.rb', line 28

def transform(*transforms)
  @transforms += Array(transforms)
  @transform_procs += Array(transforms).map { |t| t.to_proc }
  self
end