class Perpetuity::MapperRegistry

Public Class Methods

new() click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 5
def initialize
  @mappers = Hash.new
end

Public Instance Methods

[](klass) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 13
def [] klass
  mapper_class(klass).new(self)
end
[]=(klass, mapper) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 32
def []= klass, mapper
  @mappers[klass] = mapper
end
check_rails_app_for_mappers() click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 44
def check_rails_app_for_mappers
  Dir['app/**/*_mapper.rb']
end
each(&block) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 36
def each &block
  @mappers.each(&block)
end
has_mapper?(klass) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 9
def has_mapper? klass
  @mappers.has_key? klass
end
load_mappers() click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 40
def load_mappers
  check_rails_app_for_mappers.each(&method(:load))
end
mapper_class(klass) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 22
def mapper_class klass
  @mappers.fetch(klass) do
    load_mappers
    unless @mappers.has_key? klass
      raise KeyError, "No mapper for #{klass}"
    end
    @mappers[klass]
  end
end
mapper_for(klass, options={}) click to toggle source
# File lib/perpetuity/mapper_registry.rb, line 17
def mapper_for klass, options={}
  identity_map = options.fetch(:identity_map) { IdentityMap.new }
  mapper_class(klass).new(self, identity_map)
end