Sha256: f365f104ec9575b49a68d1ccdd32880938a76b868968365104dce296811d3c1c
Contents?: true
Size: 1.18 KB
Versions: 17
Compression:
Stored size: 1.18 KB
Contents
module Krikri ## # Handles transformation of OriginalRecords into a target class. # # map = Mapping.new(MyModelClass) # map.dsl_method args # map.process_record(my_original_record) # # => #<MyModelClass:0x3ff8b7459210()> # class Mapping include MappingDSL attr_reader :klass, :parser, :parser_args ## # @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. def initialize(klass = DPLA::MAP::Aggregation, parser = Krikri::XmlParser, *parser_args) @klass = klass @parser = parser @parser_args = parser_args end ## # @param record [OriginalRecord] An original record to process. # @return [Object] A model object of type @klass, processed through the # mapping DSL def process_record(record) mapped_record = klass.new properties.each do |prop| prop.to_proc.call(mapped_record, parser.parse(record, *@parser_args)) end mapped_record end end end
Version data entries
17 entries across 17 versions & 1 rubygems