Class: Remi::Parser

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

Overview

A parser is an object that converts data returned from an Remi::Extractor into a dataframe. This is a parent class meant to be inherited by child classes that define specific ways to parse data.

Direct Known Subclasses

CsvFile, DataFrame, Gsheet, None, Postgres, Salesforce

Defined Under Namespace

Classes: CsvFile, DataFrame, Gsheet, 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) ⇒ Parser

Returns a new instance of Parser.

Parameters:

  • context (Object) (defaults to: nil)

    The context (e.g., DataSource) for the parser (default: nil)

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

    The field symbolizer to use for this parser

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

    A hash of field metadata to be used by the parser



11
12
13
14
15
16
17
# File 'lib/remi/parser.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/parser.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)



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

def field_symbolizer
  return context.field_symbolizer 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)



39
40
41
42
# File 'lib/remi/parser.rb', line 39

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

#loggerObject

Returns the value of attribute logger.



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

def logger
  @logger
end

Instance Method Details

#parse(data) ⇒ Remi::DataFrame

Any child classes need to define a parse method that converts extracted data into a dataframe.

Parameters:

  • data (Object)

    Extracted data that needs to be parsed

Returns:

Raises:

  • (NoMethodError)


28
29
30
# File 'lib/remi/parser.rb', line 28

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