module SmartCore::Injection::Locator::Factory
@api private @since 0.1.0
Public Class Methods
create(injection_settings, import_key, import_path)
click to toggle source
@param injection_settings [SmartCore::Injection::Injector::InjectionSettings] @return [SmartCore::Injection::Locator]
@api private @since 0.1.0
# File lib/smart_core/injection/locator/factory.rb, line 12 def create(injection_settings, import_key, import_path) container_proxy = create_container_proxy(injection_settings) create_locator(import_path, container_proxy).tap do |locator| control_injection_memoization(injection_settings, container_proxy, locator, import_path) end end
Private Class Methods
control_injection_memoization(injection_settings, container_proxy, locator, import_path)
click to toggle source
@param injection_settings [SmartCore::Injection::Injector::InjectionSettings] @param locator [SmartCore::Injection::Locator] @param import_path [String] @return [void]
@api private @since 0.1.0
# File lib/smart_core/injection/locator/factory.rb, line 49 def control_injection_memoization(injection_settings, container_proxy, locator, import_path) container_proxy.observe(import_path) do locator.rebind! end unless injection_settings.memoize end
create_container_proxy(injection_settings)
click to toggle source
@return [SmartCore::Injection::Locator::ContainerProxy]
@api private @since 0.1.0
# File lib/smart_core/injection/locator/factory.rb, line 25 def create_container_proxy(injection_settings) SmartCore::Injection::Locator::ContainerProxy.new( injection_settings.container_set, injection_settings.from ) end
create_locator(import_path, container_proxy)
click to toggle source
@param import_path [String] @param container_proxy [SmartCore::Injection::Locator::ContainerProxy] @return [SmartCore::Injection::Locator]
@api private @since 0.1.0
# File lib/smart_core/injection/locator/factory.rb, line 38 def create_locator(import_path, container_proxy) SmartCore::Injection::Locator.new(import_path, container_proxy) end