module Flatter::Mapper::Target

Constants

NoTargetError

Attributes

factory[RW]

Public Class Methods

new(target = nil, *) click to toggle source
Calls superclass method
# File lib/flatter/mapper/target.rb, line 30
def initialize(target = nil, *)
  super
  set_target!(target) if target.present?
end

Public Instance Methods

default_target_class_name() click to toggle source
# File lib/flatter/mapper/target.rb, line 80
def default_target_class_name
  self.class.name.sub 'Mapper', ''
end
set_target(target) click to toggle source
# File lib/flatter/mapper/target.rb, line 53
def set_target(target)
  if trait?
    mounter.set_target!(target)
  else
    set_target!(target)
    trait_mountings.each{ |trait| trait.set_target!(target) }
  end
end
set_target!(target) click to toggle source
# File lib/flatter/mapper/target.rb, line 62
def set_target!(target)
  fail NoTargetError, "Cannot set nil target for #{self.class.name}" if target.nil?
  @_target_initialized = true
  @target = target
end
target() click to toggle source
# File lib/flatter/mapper/target.rb, line 35
def target
  ensure_target!
  @target
end
target_class() click to toggle source
# File lib/flatter/mapper/target.rb, line 72
def target_class
  target_class_name.constantize
end
target_class_name() click to toggle source
# File lib/flatter/mapper/target.rb, line 76
def target_class_name
  options[:target_class_name] || default_target_class_name
end
target_initialized?() click to toggle source
# File lib/flatter/mapper/target.rb, line 68
def target_initialized?
  !!@_target_initialized
end

Protected Instance Methods

ensure_target!() click to toggle source
# File lib/flatter/mapper/target.rb, line 40
def ensure_target!
  initialize_target unless target_initialized?
end

Private Instance Methods

initialize_target() click to toggle source
# File lib/flatter/mapper/target.rb, line 45
def initialize_target
  return set_target!(mounter.target) if trait?

  _mounter = mounter.trait? ? mounter.mounter : mounter
  set_target!(factory.fetch_target_from(_mounter))
end