Sha256: d2d8df88636d656a2982391dd69a32b4e3131f2fafd4f94dae238016c1c36e02

Contents?: true

Size: 826 Bytes

Versions: 5

Compression:

Stored size: 826 Bytes

Contents

module Dry::Initializer::Plugins
  # Plugin builds a code for variable setter:
  #
  # @example
  #   VariableSetter.call(:user, option: false)
  #   # => "@user = user"
  #
  #   VariableSetter.call(:user, option: true)
  #   # => "@user = __options__.fetch(:user)"
  #
  #   VariableSetter.call(:user, option: true, optional: true)
  #   # => "@user = __options__.fetch(:user, Dry::Initializer::UNDEFINED)"
  #
  class VariableSetter < Base
    def param?
      settings[:option] != true
    end

    def required?
      !settings.key?(:default) && !settings[:optional]
    end

    def call
      return "@#{name} = #{name}" if param?
      key = ":\"#{name}\""
      return "@#{rename} = __options__.fetch(#{key})" if required?
      "@#{rename} = __options__.fetch(#{key}, Dry::Initializer::UNDEFINED)"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dry-initializer-0.11.0 lib/dry/initializer/plugins/variable_setter.rb
dry-initializer-0.10.2 lib/dry/initializer/plugins/variable_setter.rb
dry-initializer-0.10.1 lib/dry/initializer/plugins/variable_setter.rb
dry-initializer-0.10.0 lib/dry/initializer/plugins/variable_setter.rb
dry-initializer-0.9.3 lib/dry/initializer/plugins/variable_setter.rb