class SmartCore::Initializer::Settings::TypeSystem

@api private @since 0.1.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 10
def initialize
  @type_system = nil
  @lock = SmartCore::Engine::Lock.new
end

Public Instance Methods

assign(value) click to toggle source

@param value [String, Symbol] @return [void]

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 40
def assign(value)
  thread_safe do
    SmartCore::Initializer::TypeSystem.resolve(value) # NOTE: type system existence validation
    @type_system = value
  end
end
dup() click to toggle source

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

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 51
def dup
  thread_safe do
    self.class.new.tap do |duplicate|
      duplicate.instance_variable_set(:@type_system, @type_system)
    end
  end
end
generic_type_object() click to toggle source

@return [Any]

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 19
def generic_type_object
  thread_safe do
    SmartCore::Initializer::TypeSystem.resolve(resolve).generic_type_object
  end
end
resolve() click to toggle source

@return [Symbol]

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 29
def resolve
  thread_safe do
    @type_system || SmartCore::Initializer::Configuration.config[:default_type_system]
  end
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/smart_core/initializer/settings/type_system.rb, line 66
def thread_safe(&block)
  @lock.synchronize(&block)
end