Class: Remi::Encoder

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

Overview

An encoder is an object tha converts a dataframe into a form that can be used by a Remi::Loader. This is a parent class meant to be inherited by child classes that define specific ways to parse data.

Direct Known Subclasses

CsvFile, DataFrame, None, Postgres, Salesforce

Defined Under Namespace

Classes: CsvFile, DataFrame, None, Postgres, Salesforce

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, context: nil, field_symbolizer: Remi::FieldSymbolizers[:standard], fields: Remi::Fields.new({}), logger: Remi::Settings.logger, **kargs, &block) ⇒ Encoder



11
12
13
14
15
16
17
# File 'lib/remi/encoder.rb', line 11

def initialize(*args, context: nil, field_symbolizer: Remi::FieldSymbolizers[:standard], fields: Remi::Fields.new({}), logger: Remi::Settings.logger, **kargs, &block)
  @context = context
  @field_symbolizer = field_symbolizer

  @fields = fields
  @logger = logger
end

Instance Attribute Details

#contextObject

Returns the value of attribute context.



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

def context
  @context
end

#field_symbolizerProc



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

def field_symbolizer
  return context.field_symbolizer if context if context.respond_to? :field_symbolizer
  @field_symbolizer
end

#fieldsRemi::Fields



40
41
42
43
# File 'lib/remi/encoder.rb', line 40

def fields
  return context.fields if context && context.respond_to?(:fields)
  @fields
end

#loggerObject

Returns the value of attribute logger.



20
21
22
# File 'lib/remi/encoder.rb', line 20

def logger
  @logger
end

Instance Method Details

#encode(dataframe) ⇒ Object

Any child classes need to define an encode method that converts the data subject's dataframe into a structure that can be loaded into the target system.

Raises:

  • (NoMethodError)


29
30
31
# File 'lib/remi/encoder.rb', line 29

def encode(dataframe)
  raise NoMethodError, "#{__method__} not defined for #{self.class.name}"
end