class Flatter::Mapper::Factory
Constants
- NoTargetError
Attributes
name[R]
options[R]
Public Class Methods
new(name, **options)
click to toggle source
# File lib/flatter/mapper/factory.rb, line 13 def initialize(name, **options) @name, @options = name.to_s, options end
Public Instance Methods
create(*)
click to toggle source
# File lib/flatter/mapper/factory.rb, line 36 def create(*) mapper_class.new.tap{ |mapper| mapper.factory = self } end
default_mapper_class_name()
click to toggle source
# File lib/flatter/mapper/factory.rb, line 32 def default_mapper_class_name "#{name.camelize}Mapper" end
fetch_target_from(mapper)
click to toggle source
# File lib/flatter/mapper/factory.rb, line 49 def fetch_target_from(mapper) default_target_from(mapper) end
mapper_class()
click to toggle source
# File lib/flatter/mapper/factory.rb, line 17 def mapper_class options[:mapper_class] || default_mapper_class end
mapper_class_name()
click to toggle source
# File lib/flatter/mapper/factory.rb, line 28 def mapper_class_name options[:mapper_class_name] || modulize(default_mapper_class_name) end
Private Instance Methods
default_mapper_class()
click to toggle source
# File lib/flatter/mapper/factory.rb, line 21 def default_mapper_class mapper_class_name.constantize rescue NameError => e Flatter.default_mapper_class or raise e end
default_target_from(mapper)
click to toggle source
# File lib/flatter/mapper/factory.rb, line 53 def default_target_from(mapper) if mapper.target.respond_to?(name) mapper.target.public_send(name) else fail NoTargetError, "Unable to implicitly fetch target for '#{name}' from #{mapper}" end end
modulize(class_name)
click to toggle source
# File lib/flatter/mapper/factory.rb, line 40 def modulize(class_name) if i = options[:mounter_name].rindex('::') "#{options[:mounter_name][0...i]}::#{class_name}" else class_name end end