module SmartCore::Initializer::InitializationDSL

@api private @since 0.5.0

Public Class Methods

included(base_klass) click to toggle source

@param base_klass [Class] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/initialization_dsl.rb, line 13
def included(base_klass) # rubocop:disable Metrics/AbcSize
  # rubocop:disable Metrics/LineLength
  base_klass.instance_variable_set(:@__initialization_extension_definer__, ExtensionDefiner.new(base_klass))
  base_klass.instance_variable_set(:@__initialization_extensions__, ExtensionSet.new)
  base_klass.instance_variable_set(:@__attr_definer__, AttributeDefiner.new(base_klass))
  base_klass.instance_variable_set(:@__params__, AttributeSet.new)
  base_klass.instance_variable_set(:@__options__, AttributeSet.new)
  # rubocop:enable Metrics/LineLength

  base_klass.extend(ClassMethods)
  base_klass.extend(DSLMethods)
  base_klass.singleton_class.prepend(InitializationMethods)

  base_klass.singleton_class.prepend(Module.new do
    # @param child_klass [Class]
    # @return [void]
    #
    # @api private
    # @since 0.5.0
    def inherited(child_klass) # rubocop:disable Metrics/AbcSize
      # rubocop:disable Metrics/LineLength
      child_klass.instance_variable_set(:@__initialization_extension_definer__, ExtensionDefiner.new(child_klass))
      child_klass.instance_variable_set(:@__initialization_extensions__, ExtensionSet.new)
      child_klass.instance_variable_set(:@__attr_definer__, AttributeDefiner.new(child_klass))
      child_klass.instance_variable_set(:@__params__, AttributeSet.new)
      child_klass.instance_variable_set(:@__options__, AttributeSet.new)
      # rubocop:enable Metrics/LineLength

      child_klass.singleton_class.prepend(InitializationMethods)

      child_klass.__initialization_extensions__.concat(__initialization_extensions__)
      child_klass.__params__.concat(__params__)
      child_klass.__options__.concat(__options__)

      super(child_klass)
    end
  end)
end
inherited(child_klass) click to toggle source

@param child_klass [Class] @return [void]

@api private @since 0.5.0

Calls superclass method
# File lib/smart_core/initializer/initialization_dsl.rb, line 32
def inherited(child_klass) # rubocop:disable Metrics/AbcSize
  # rubocop:disable Metrics/LineLength
  child_klass.instance_variable_set(:@__initialization_extension_definer__, ExtensionDefiner.new(child_klass))
  child_klass.instance_variable_set(:@__initialization_extensions__, ExtensionSet.new)
  child_klass.instance_variable_set(:@__attr_definer__, AttributeDefiner.new(child_klass))
  child_klass.instance_variable_set(:@__params__, AttributeSet.new)
  child_klass.instance_variable_set(:@__options__, AttributeSet.new)
  # rubocop:enable Metrics/LineLength

  child_klass.singleton_class.prepend(InitializationMethods)

  child_klass.__initialization_extensions__.concat(__initialization_extensions__)
  child_klass.__params__.concat(__params__)
  child_klass.__options__.concat(__options__)

  super(child_klass)
end