Sha256: 8a3889a65ea6330d1b75d7b653931664605d6b04002dbdbe156b5a178a75afa6

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Dry
  module Configurable
    class Extension < Module
      # @api private
      attr_reader :config_class

      # @api private
      attr_reader :default_undefined

      # @api private
      def initialize(config_class: Configurable::Config, default_undefined: false)
        super()
        @config_class = config_class
        @default_undefined = default_undefined
        freeze
      end

      # @api private
      def extended(klass)
        super
        klass.extend(ClassMethods)
        klass.instance_variable_set(:@__config_extension__, self)
      end

      # @api private
      def included(klass)
        raise AlreadyIncludedError if klass.include?(InstanceMethods)

        super

        klass.class_eval do
          extend(ClassMethods)
          include(InstanceMethods)
          prepend(Initializer)

          class << self
            undef :config
            undef :configure
          end
        end

        klass.instance_variable_set(:@__config_extension__, self)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-configurable-1.1.0 lib/dry/configurable/extension.rb
dry-configurable-1.0.1 lib/dry/configurable/extension.rb
dry-configurable-1.0.0 lib/dry/configurable/extension.rb