Sha256: d69bf87e490aecd0c3d374f6d942cb5602cbb7ee9f13eb478afece079fdb1aa0

Contents?: true

Size: 1.59 KB

Versions: 5

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Strict
  class MethodDefinitionError < Error
    attr_reader :verifiable_method, :missing_parameters, :additional_parameters

    def initialize(verifiable_method:, missing_parameters:, additional_parameters:)
      super(
        message_from(
          verifiable_method: verifiable_method,
          missing_parameters: missing_parameters,
          additional_parameters: additional_parameters
        )
      )

      @verifiable_method = verifiable_method
      @missing_parameters = missing_parameters
      @additional_parameters = additional_parameters
    end

    private

    def message_from(verifiable_method:, missing_parameters:, additional_parameters:)
      details = [
        missing_parameters_message_from(missing_parameters),
        additional_parameters_message_from(additional_parameters)
      ].compact.join("\n")

      "Defining #{verifiable_method} failed because:\n#{details}"
    end

    def missing_parameters_message_from(missing_parameters)
      return nil unless missing_parameters.any?

      details = missing_parameters.map do |parameter_name|
        "    - #{parameter_name}"
      end.join("\n")

      "  Some parameters were in the sig, but were not in the parameter list:\n#{details}"
    end

    def additional_parameters_message_from(additional_parameters)
      return nil unless additional_parameters.any?

      details = additional_parameters.map do |parameter_name|
        "    - #{parameter_name}"
      end.join("\n")

      "  Some parameters were not in the sig, but were in the parameter list:\n#{details}"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
strict-1.5.0 lib/strict/method_definition_error.rb
strict-1.4.0 lib/strict/method_definition_error.rb
strict-1.3.1 lib/strict/method_definition_error.rb
strict-1.3.0 lib/strict/method_definition_error.rb
strict-1.2.0 lib/strict/method_definition_error.rb