def process_record(record)
      mapped_record = klass.new
      error = properties.each_with_object(Error.new(record)) do |prop, error|
        begin
          prop.to_proc.call(mapped_record, parser.parse(record, *@parser_args))
        rescue => e
          error.add(prop.name, e)
        end
      end
      raise error unless error.errors.empty?
      mapped_record
    end
def process_record(record)
      mapped_record = klass.new
      error = properties.each_with_object(Error.new(record)) do |prop, error|
        begin
          prop.to_proc.call(mapped_record, parser.parse(record, *@parser_args))
        rescue => e
          error.add(prop.name, e)
        end
      end
      raise error unless error.errors.empty?
      mapped_record
    end
@param klass [Class] The model class to build in the mapping process.
 @param parser [Class] The parser class with which to process resources.
 @param parser_args [Array] The arguments to pass to the parser when
   processing records.

 @param record [OriginalRecord] An original record to process.

 @return [Object] A model object of type @klass, processed through the
   mapping DSL
 @raise [Krikri::Mapper::Error] when an error is thrown when handling any
   of the properties