Sha256: 03e45a208986d32343938adcf12027443dc6cdac0cc34d09540e9368c0a574eb

Contents?: true

Size: 763 Bytes

Versions: 2

Compression:

Stored size: 763 Bytes

Contents

# frozen_string_literal: true

module Strict
  class AssignmentError < Error
    attr_reader :invalid_attribute, :value

    def initialize(assignable_class:, invalid_attribute:, value:)
      super(message_from(assignable_class:, invalid_attribute:, value:))

      @invalid_attribute = invalid_attribute
      @value = value
    end

    private

    def message_from(assignable_class:, invalid_attribute:, value:)
      details = invalid_attribute_message_from(invalid_attribute, value)
      "Assignment to #{invalid_attribute.name} of #{assignable_class} failed because:\n#{details}"
    end

    def invalid_attribute_message_from(invalid_attribute, value)
      "  - got #{value.inspect}, expected #{invalid_attribute.validator.inspect}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
strict-1.1.0 lib/strict/assignment_error.rb
strict-1.0.0 lib/strict/assignment_error.rb