Sha256: 8c5bd1fe047785f4afd7fbb3a0a15133875c142bd8ddb2135f8535ccb2def75f

Contents?: true

Size: 641 Bytes

Versions: 3

Compression:

Stored size: 641 Bytes

Contents

module ROM

  # @api private
  class ReaderBuilder
    attr_reader :relations, :readers

    # @api private
    def initialize(relations)
      @relations = relations
      @readers = {}
    end

    # @api private
    def call(name, options = {}, &block)
      parent = relations[options.fetch(:parent) { name }]

      builder = MapperBuilder.new(name, parent, options)
      builder.instance_exec(&block)
      mapper = builder.call

      mappers = options[:parent] ? readers.fetch(parent.name).mappers : {}

      mappers[name] = mapper
      readers[name] = Reader.new(name, parent, mappers) unless options[:parent]
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rom-0.4.0 lib/rom/reader_builder.rb
rom-0.3.1 lib/rom/reader_builder.rb
rom-0.3.0 lib/rom/reader_builder.rb