Class: Dry::Initializer::Plugins::TypeConstraint

Inherits:
Base
  • Object
show all
Defined in:
lib/dry/initializer/plugins/type_constraint.rb

Overview

Plugin builds either chunk of code for the #initializer, or a proc for the ##after_initialize callback.

Instance Attribute Summary

Attributes inherited from Base

#name, #settings

Instance Method Summary collapse

Methods inherited from Base

#==, call, #initialize, #rename

Constructor Details

This class inherits a constructor from Dry::Initializer::Plugins::Base

Instance Method Details

#callObject



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/dry/initializer/plugins/type_constraint.rb', line 5

def call
  return unless settings.key? :type

  type = settings[:type]
  fail TypeConstraintError.new(rename, type) unless type.respond_to? :call

  ivar = :"@#{rename}"
  lambda do |*|
    value = instance_variable_get(ivar)
    return if value == Dry::Initializer::UNDEFINED
    instance_variable_set ivar, type.call(value)
  end
end