Sha256: f1fd78395932a6008cd9bf156fbfbf3772dd02c67d31cb63b1bacf5b790ef932

Contents?: true

Size: 928 Bytes

Versions: 2

Compression:

Stored size: 928 Bytes

Contents

#
# Checks the reader privacy
#
module Dry::Initializer::Dispatchers::PrepareReader
  extend self

  def call(target: nil, reader: :public, **options)
    reader = case reader.to_s
             when 'false', ''                      then nil
             when 'true'                           then :public
             when 'public', 'private', 'protected' then reader.to_sym
             else invalid_reader!(target, reader)
             end

    { target: target, reader: reader, **options }
  end

  private

  def invalid_reader!(target, _reader)
    raise ArgumentError, <<~MESSAGE
      Invalid setting for the ##{target} reader's privacy.
      Use the one of the following values for the `:reader` option:
      - 'public' (true) for the public reader (default)
      - 'private' for the private reader
      - 'protected' for the protected reader
      - nil (false) if no reader should be defined
    MESSAGE
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dry-initializer-3.0.4 lib/dry/initializer/dispatchers/prepare_reader.rb
dry-initializer-3.0.3 lib/dry/initializer/dispatchers/prepare_reader.rb