Sha256: cd8b632a091a56b4770358c687adde6309e0191adb1ebe334f2f85a5122e06c2

Contents?: true

Size: 932 Bytes

Versions: 7

Compression:

Stored size: 932 Bytes

Contents

# frozen_string_literal: true

# @api private
# @since 0.5.0
class SmartCore::Initializer::Type
  # @return [String]
  #
  # @api private
  # @since 0.5.0
  attr_reader :name

  # @name [Symbol, String]
  # @param checker [Proc]
  # @return [void]
  #
  # @api private
  # @since 0.5.0
  def initialize(name, checker)
    unless name.is_a?(String) || name.is_a?(Symbol)
      raise(SmartCore::Initializer::ArgumentError, 'Type name should be a symbol or a string')
    end

    unless checker.is_a?(Proc)
      raise(SmartCore::Initializer::ArgumentError, 'Checker should be a proc')
    end

    @name = name.to_sym
    @checker = checker
  end

  # @param value [Any]
  # @return [Boolean]
  #
  # @raise [SmartCore::Initializer::TypeError]
  #
  # @api private
  # @since 0.5.0
  def comparable?(value)
    checker.call(value)
  end

  private

  # @return [Proc]
  #
  # @api private
  # @since 0.5.0
  attr_reader :checker
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
smart_core-0.8.1 lib/smart_core/initializer/type.rb
smart_core-0.8.0 lib/smart_core/initializer/type.rb
smart_core-0.7.0 lib/smart_core/initializer/type.rb
smart_core-0.6.0 lib/smart_core/initializer/type.rb
smart_core-0.5.2 lib/smart_core/initializer/type.rb
smart_core-0.5.1 lib/smart_core/initializer/type.rb
smart_core-0.5.0 lib/smart_core/initializer/type.rb