Sha256: de0d5c96156d77c242d688f8ecff93ee6d8252d9d9d78f3aa18f9182953fc492

Contents?: true

Size: 684 Bytes

Versions: 7

Compression:

Stored size: 684 Bytes

Contents

module Dry::Initializer::Plugins
  # Builds a block to be evaluated by initializer (__after_initialize__)
  # to assign a default value to the argument
  class DefaultProc < Base
    def call
      return unless default

      ivar = :"@#{rename}"
      default_proc = default

      proc do
        if instance_variable_get(ivar) == Dry::Initializer::UNDEFINED
          instance_variable_set ivar, instance_eval(&default_proc)
        end
      end
    end

    private

    def default
      return unless settings.key? :default

      @default ||= settings[:default].tap do |value|
        fail DefaultValueError.new(name, value) unless Proc === value
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dry-initializer-0.11.0 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.10.2 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.10.1 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.10.0 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.9.3 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.9.2 lib/dry/initializer/plugins/default_proc.rb
dry-initializer-0.9.1 lib/dry/initializer/plugins/default_proc.rb