module SmartCore::Initializer::TypeSystem::RegistryInterface

@api private @since 0.1.0

Attributes

access_lock[R]

@return [SmartCore::Engine::Lock]

@api private @since 0.1.0

registry[R]

@return [SmartCore::Initializer::TypeSystem::Registry]

@api private @since 0.1.0

Public Class Methods

extended(base_module) click to toggle source

@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

[](identifier)
Alias for: resolve
build_interop(system: system_identifier, type: type_object) click to toggle source

@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
each(&block) click to toggle source

@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
names() click to toggle source

@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
register(identifier, interop_klass) click to toggle source

@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
resolve(identifier) click to toggle source

@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
Also aliased as: []
systems() click to toggle source

@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

thread_safe(&block) click to toggle source

@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