module SmartCore::Operation::ClassConstructor
@api private @since 0.1.0
Constants
- CONSYSTENCY_CONTROL
@return [SmartCore::Engine::Lock]
@api private @since 0.1.0
Public Class Methods
construct(klass = Class.new(SmartCore::Operation), type_system: default_type_system)
click to toggle source
@param klass [Class, Class<SmartCore::Operation>] @option type_system [String, Symbol] @return [Class<SmartCore::Operation>]
@api private @since 0.1.0
# File lib/smart_core/operation/class_constructor.rb, line 21 def construct(klass = Class.new(SmartCore::Operation), type_system: default_type_system) klass.tap do consistent do parameters = Parameters.new(type_system: type_system) inject_initializer_interface(klass, parameters) end end end
default_type_system()
click to toggle source
@return [String, Symbol]
@api private @since 0.1.0
# File lib/smart_core/operation/class_constructor.rb, line 34 def default_type_system SmartCore::Initializer::Configuration[:default_type_system] end
Private Class Methods
consistent(&block)
click to toggle source
@param block [Block] @return [Any]
@api private @since 0.1.0
# File lib/smart_core/operation/class_constructor.rb, line 58 def consistent(&block) CONSYSTENCY_CONTROL.synchronize(&block) end
inject_initializer_interface(klass, parameters)
click to toggle source
@param klass [Class, Class<SmartCore::Operation>] @param parameters [SmartCore::Operation::ClassConstructor::Parameters] @return [void]
@api private @since 0.1.0
# File lib/smart_core/operation/class_constructor.rb, line 46 def inject_initializer_interface(klass, parameters) unless klass < SmartCore::Initializer klass.include(SmartCore::Initializer(type_system: parameters.type_system)) klass.ext_init { |instance| SmartCore::Operation::InstanceBuilder.call(instance) } end end