module SmartCore::Initializer::TypeSystem::RegistryInterface
@api private @since 0.1.0
Attributes
@return [SmartCore::Engine::Lock]
@api private @since 0.1.0
@return [SmartCore::Initializer::TypeSystem::Registry]
@api private @since 0.1.0
Public Class Methods
@param base_module [Class, Module] @return [void]
@api private @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 12 def extended(base_module) base_module.instance_variable_set( :@registry, SmartCore::Initializer::TypeSystem::Registry.new ) base_module.instance_variable_set( :@access_lock, SmartCore::Engine::Lock.new ) end
Public Instance Methods
@option system_identifier [String, Symbol] @option type [Any] @return [SmartCore::Initializer::TypeSystem::Interop]
@api private @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 28 def build_interop(system: system_identifier, type: type_object) thread_safe { registry.resolve(system_identifier).create(type_object) } end
@param block [Block] @yield [system_name, system_interop]
@yieldparam system_name [String] @yieldparam system_interop [Class<SmartCore::Initializer::TypeSystem::Interop>]
@return [Enumerable]
@api public @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 76 def each(&block) thread_safe { registry.each(&block) } end
@return [Array<String>]
@api public @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 56 def names thread_safe { registry.names } end
@param identifier [String, Symbol] @param interop_klass [Class<SmartCore::Initializer::TypeSystem::Interop>] @return [void]
@api private @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 38 def register(identifier, interop_klass) thread_safe { registry.register(identifier, interop_klass) } end
@param identifier [String, Symbol] @return [Class<SmartCore::Initializer::TypeSystem::Interop>]
@api private @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 47 def resolve(identifier) thread_safe { registry.resolve(identifier) } end
@return [Array<Class<SmartCore::Initializer::TypeSystem::Interop>>]
@api public @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 64 def systems thread_safe { registry.to_h } end
Private Instance Methods
@param block [Block] @return [Any]
@api pribate @since 0.1.0
# File lib/smart_core/initializer/type_system/registry_interface.rb, line 99 def thread_safe(&block) access_lock.synchronize(&block) end