class RSpec::Core::DidYouMean

@private Wrapper around Ruby’s ‘DidYouMean::SpellChecker` when available to provide file name suggestions.

Attributes

relative_file_name[R]

Public Class Methods

new(relative_file_name) click to toggle source
# File lib/rspec/core/did_you_mean.rb, line 8
def initialize(relative_file_name)
  @relative_file_name = relative_file_name
end

Public Instance Methods

call() click to toggle source

provide probable suggestions

# File lib/rspec/core/did_you_mean.rb, line 14
def call
  checker = ::DidYouMean::SpellChecker.new(:dictionary => Dir["spec/**/*.rb"])
  probables = checker.correct(relative_file_name.sub('./', ''))[0..2]
  return '' unless probables.any?

  formats probables
end

Private Instance Methods

formats(probables) click to toggle source
# File lib/rspec/core/did_you_mean.rb, line 30
def formats(probables)
  rspec_format = probables.map { |s, _| "rspec ./#{s}" }
  red_font(top_and_tail rspec_format)
end
red_font(mytext) click to toggle source
# File lib/rspec/core/did_you_mean.rb, line 40
def red_font(mytext)
  colorizer = ::RSpec::Core::Formatters::ConsoleCodes
  colorizer.wrap mytext, :failure
end
top_and_tail(rspec_format) click to toggle source
# File lib/rspec/core/did_you_mean.rb, line 35
def top_and_tail(rspec_format)
  spaces = ' ' * 20
  rspec_format.insert(0, ' - Did you mean?').join("\n#{spaces}") + "\n"
end