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, SalesforceSoap

Defined Under Namespace

Classes: CsvFile, DataFrame, None, Postgres, Salesforce, SalesforceSoap

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

Returns a new instance of Encoder.

Parameters:

  • context (Object) (defaults to: nil)

    The context (e.g., DataTarget) for the encoder (default: nil)

  • field_symbolizer (Proc) (defaults to: Remi::FieldSymbolizers[:standard])

    The field symbolizer to use for this encoder

  • fields (Remi::Fields) (defaults to: Remi::Fields.new({}))

    A hash of field metadata to be used by the 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

Returns The field symbolizer (uses the context field symbolizer if defined).

Returns:

  • (Proc)

    The field symbolizer (uses the context field symbolizer if defined)



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

Returns The fields (uses the context fields if defined).

Returns:

  • (Remi::Fields)

    The fields (uses the context fields if defined)



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.

Parameters:

Returns:

  • (Object)

    The encoded data to be loaded into the target

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