class Halunke::HUnknownMessage

Public Class Methods

new(receiver, message_name, receivable_messages, source_code_position) click to toggle source
Calls superclass method Halunke::HError::new
# File lib/halunke/herror.rb, line 18
def initialize(receiver, message_name, receivable_messages, source_code_position)
  message = [
    "#{receiver} received the message `#{message_name}`. It doesn't know how to handle that.",
    did_you_mean(receivable_messages, message_name)
  ].join("\n")

  super(message, source_code_position)
end

Private Instance Methods

did_you_mean(receivable_messages, message_name) click to toggle source
# File lib/halunke/herror.rb, line 29
def did_you_mean(receivable_messages, message_name)
  guess = receivable_messages.min_by { |m| levenshtein_distance(m, message_name) }

  if levenshtein_distance(guess, message_name) < 5
    "Did you mean `#{guess}`?"
  else
    "It supports the following messages: #{receivable_messages.join(", ")}"
  end
end