module ReeMapper::DSL::ClassMethods

def build_mapper(register_as: nil)

def build_mapper(register_as: nil)
  mapper_factory = ReeMapper.get_mapper_factory(Object.const_get(name.split('::').first))
  mapper_factory.call(register_as: register_as) do |mapper|
    self.instance_variable_set(:@mapper, mapper)
  end
end

def mapper(name, &proc)

def mapper(name, &proc)
  dsl = Ree::ObjectDsl.new(
    Ree.container.packages_facade, name, self, :object
  )
  dsl.instance_exec(&proc) if block_given?
  dsl.factory :build
  Ree.container.compile(dsl.package, name)
end