Class: Remi::SourceToTargetMap

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

Overview

Public: Class used to define a DSL for source to target maps.

Examples

SourceToTargetMap.apply(df) do
  map source(:a) .target(:aprime)
    .transform(->(v) { "#{v}prime" })
  map source(:a) .target(:aup)
    .transform(->(v) { "#{v.upcase}" })
end
#=> <Daru::DataFrame:70291322684920 @name = 8c546a52-c1a7-495a-996a-7f352b0087b7 @size = 3>
                      a     aprime       aup
           0         a1    a1prime        A1
           1         a2    a2prime        A2
           2         a3    a3prime        A3

Defined Under Namespace

Classes: Map, Row

Instance Attribute Summary collapse

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

Public: Initializes the SourceToTargetMap DSL

source_df - The source dataframe. target_df - The target dataframe (default: source_df). source_metadata - Metadata (Remi::Fields) for the source fields. target_metadata - Metadata (Remi::Fields) for the target fields.



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

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

  @target_df = target_df || source_df
  @target_metadata =  || 
end

Instance Attribute Details

#source_dfObject (readonly)

Returns the value of attribute source_df.



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

def source_df
  @source_df
end

#target_dfObject (readonly)

Returns the value of attribute target_df.



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

def target_df
  @target_df
end

Class Method Details

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

Public: Expects a block in which the DSL will be applied.

Same arguments as the constructor.

Returns the target dataframe.



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

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)
  target_df || source_df
end

Instance Method Details

#map(defined_map) ⇒ Object

Public: Executes a mapping.

defined_map - The SourceToTargetMap::Map object to execute

Returns the target dataframe.



70
71
72
# File 'lib/remi/source_to_target_map.rb', line 70

def map(defined_map)
  defined_map.execute
end

#source(*source_vectors) ⇒ Object

Public: Adds a list of source vectors to a new mapping.

source_vectors - A list of vector names.

Returns a SourceToTargetMap::Map with the defined source vectors.



52
53
54
# File 'lib/remi/source_to_target_map.rb', line 52

def source(*source_vectors)
  new_map.source(*source_vectors)
end

#target(*target_vectors) ⇒ Object

Public: Adds a list of targets vectors to a new mapping.

target_vectors - A list of target names.

Returns a SourceToTargetMap::Map with the defined target vectors.



61
62
63
# File 'lib/remi/source_to_target_map.rb', line 61

def target(*target_vectors)
  new_map.target(*target_vectors)
end