class Eco::API::Common::People::BaseParser

@example Example of usage:

class ExampleParser < Eco::API::Common::People::BaseParser
  def process
    @parsers.define_attribute("example") do |parser|
      parser.def_parser  do |str, deps|
        i = value.to_i rescue 0
        i +=5 if deps.dig(:sum_5)
        i
      end.def_serializer do |value|
        value.to_s
      end
    end
  end
end
pparser = Eco::API::Common::People::PersonParser.new
ExampleParser.new(pparser)
pparser.parse("example","3") # out: 3
pparser.parse("example","3", deps: {sum_5: true}) # out: 8
pparser.serialise("example, 8) # out: "8"

Helper class to inherit from to ease the definition of attribute parsers in a `PersonParser` object, mostly used in for configuration loading.

Public Class Methods

new(parsers, **options) click to toggle source

@param parsers [Eco::API::Common::People::PersonParser] set of attribute parsers/serialisers. @param options [Hash] keyword arguments to be used in the `process` method of the child class.

# File lib/eco/api/common/people/base_parser.rb, line 32
def initialize(parsers, **options)
  @parsers = parsers
  @options = options
end

Public Instance Methods

process() click to toggle source

Method to be overriden by the child class. @note this method is called to load the definition of the attribute parser/serializer.

# File lib/eco/api/common/people/base_parser.rb, line 39
def process
  raise "Method needs to be overriden in the child class #{self.class}"
end