lib/eco/api/common/people/base_parser.rb in eco-helpers-0.6.17 vs lib/eco/api/common/people/base_parser.rb in eco-helpers-0.7.1

- old
+ new

@@ -1,15 +1,45 @@ module Eco module API module Common module People + + # @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. class BaseParser + + # @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. def initialize(parsers, **options) @parsers = parsers @options = options end - def process; end + # Method to be overriden by the child class. + # @note this method is called to load the definition of the attribute parser/serializer. + def process + raise "Method needs to be overriden in the child class #{self.class}" + end end end end end end