Sha256: bbd0fdd97ef9a3d093c99b9744b70d6a4d945223b067484aae1ddce4a0468d78

Contents?: true

Size: 846 Bytes

Versions: 3

Compression:

Stored size: 846 Bytes

Contents

module Dry::Initializer::Plugins
  # Plugin builds a chunk of code for the initializer's signature:
  #
  # @example
  #   Signature.call(:user, option: true)
  #   # => "user:"
  #
  #   Signature.call(:user, default: -> { nil })
  #   # => "user = Dry::Initializer::UNDEFINED"
  #
  class Signature < Base
    def param?
      settings[:option] != true
    end

    def default?
      settings.key? :default
    end

    def optional?
      default? || settings.key?(:optional)
    end

    def call
      case [param?, optional?]
      when [true, false]  then name.to_s
      when [false, false] then "#{name}:"
      when [true, true]   then "#{name} = #{undefined}"
      when [false, true]  then "#{name}: #{undefined}"
      end
    end

    private

    def undefined
      @undefined ||= "Dry::Initializer::UNDEFINED"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-initializer-0.7.0 lib/dry/initializer/plugins/signature.rb
dry-initializer-0.6.0 lib/dry/initializer/plugins/signature.rb
dry-initializer-0.5.0 lib/dry/initializer/plugins/signature.rb