did_you_mean 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +48 -0
- data/CHANGELOG.md +75 -75
- data/Gemfile +2 -1
- data/README.md +2 -32
- data/Rakefile +4 -5
- data/appveyor.yml +25 -0
- data/did_you_mean.gemspec +6 -4
- data/documentation/CHANGELOG.md.erb +8 -0
- data/documentation/changelog_generator.rb +34 -0
- data/documentation/human_typo_api.md +20 -0
- data/documentation/tree_spell_algorithm.md +82 -0
- data/documentation/tree_spell_checker_api.md +24 -0
- data/lib/did_you_mean.rb +17 -16
- data/lib/did_you_mean/experimental.rb +2 -2
- data/lib/did_you_mean/experimental/initializer_name_correction.rb +1 -1
- data/lib/did_you_mean/experimental/ivar_name_correction.rb +3 -1
- data/lib/did_you_mean/levenshtein.rb +1 -1
- data/lib/did_you_mean/spell_checker.rb +7 -7
- data/lib/did_you_mean/spell_checkers/key_error_checker.rb +8 -2
- data/lib/did_you_mean/spell_checkers/method_name_checker.rb +14 -6
- data/lib/did_you_mean/spell_checkers/name_error_checkers.rb +2 -2
- data/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb +5 -5
- data/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb +1 -1
- data/lib/did_you_mean/tree_spell_checker.rb +137 -0
- data/lib/did_you_mean/verbose.rb +2 -2
- data/lib/did_you_mean/version.rb +1 -1
- data/test/core_ext/test_name_error_extension.rb +48 -0
- data/test/edit_distance/{jaro_winkler_test.rb → test_jaro_winkler.rb} +2 -2
- data/test/fixtures/mini_dir.yml +15 -0
- data/test/fixtures/rspec_dir.yml +112 -0
- data/test/helper.rb +29 -0
- data/test/spell_checking/{class_name_check_test.rb → test_class_name_check.rb} +12 -10
- data/test/spell_checking/{key_name_check_test.rb → test_key_name_check.rb} +18 -8
- data/test/spell_checking/{method_name_check_test.rb → test_method_name_check.rb} +17 -15
- data/test/spell_checking/{uncorrectable_name_check_test.rb → test_uncorrectable_name_check.rb} +3 -3
- data/test/spell_checking/{variable_name_check_test.rb → test_variable_name_check.rb} +18 -16
- data/test/{spell_checker_test.rb → test_spell_checker.rb} +2 -2
- data/test/test_tree_spell_checker.rb +173 -0
- data/test/test_verbose_formatter.rb +21 -0
- data/test/tree_spell/change_word.rb +61 -0
- data/test/tree_spell/human_typo.rb +89 -0
- data/test/tree_spell/test_change_word.rb +38 -0
- data/test/tree_spell/test_explore.rb +128 -0
- data/test/tree_spell/test_human_typo.rb +24 -0
- metadata +47 -58
- data/.travis.yml +0 -23
- data/test/core_ext/name_error_extension_test.rb +0 -51
- data/test/experimental/initializer_name_correction_test.rb +0 -15
- data/test/experimental/method_name_checker_test.rb +0 -13
- data/test/test_helper.rb +0 -13
- data/test/verbose_formatter_test.rb +0 -22
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
script: bundle exec rake
|
3
|
-
cache: bundler
|
4
|
-
sudo: false
|
5
|
-
|
6
|
-
before_install:
|
7
|
-
- gem install bundler
|
8
|
-
|
9
|
-
after_success:
|
10
|
-
- bundle exec rake test:accuracy
|
11
|
-
- bundle exec rake benchmark:memory
|
12
|
-
|
13
|
-
rvm:
|
14
|
-
- 2.5.3
|
15
|
-
- 2.6.0
|
16
|
-
- ruby-head
|
17
|
-
- jruby-9.2.5.0
|
18
|
-
- jruby-head
|
19
|
-
|
20
|
-
matrix:
|
21
|
-
allow_failures:
|
22
|
-
- rvm: jruby-9.2.5.0
|
23
|
-
- rvm: jruby-head
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class NameErrorExtensionTest < Minitest::Test
|
4
|
-
SPELL_CHECKERS = DidYouMean::SPELL_CHECKERS
|
5
|
-
|
6
|
-
class TestSpellChecker
|
7
|
-
def initialize(*); end
|
8
|
-
def corrections; ["does_exist"]; end
|
9
|
-
end
|
10
|
-
|
11
|
-
def setup
|
12
|
-
@org, SPELL_CHECKERS['NameError'] = SPELL_CHECKERS['NameError'], TestSpellChecker
|
13
|
-
|
14
|
-
@error = assert_raises(NameError){ doesnt_exist }
|
15
|
-
end
|
16
|
-
|
17
|
-
def teardown
|
18
|
-
SPELL_CHECKERS['NameError'] = @org
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_message
|
22
|
-
message = <<~MESSAGE.chomp
|
23
|
-
undefined local variable or method `doesnt_exist' for #{to_s}
|
24
|
-
Did you mean? does_exist
|
25
|
-
MESSAGE
|
26
|
-
|
27
|
-
assert_equal message, @error.to_s
|
28
|
-
assert_equal message, @error.message
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_to_s_does_not_make_disruptive_changes_to_error_message
|
32
|
-
error = assert_raises(NameError) do
|
33
|
-
raise NameError, "uninitialized constant Object"
|
34
|
-
end
|
35
|
-
|
36
|
-
error.to_s
|
37
|
-
assert_equal 1, error.to_s.scan("Did you mean?").count
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_correctable_error_objects_are_dumpable
|
41
|
-
error = begin
|
42
|
-
File.open('did_you_mean.gemspec').sizee
|
43
|
-
rescue NoMethodError => e
|
44
|
-
e
|
45
|
-
end
|
46
|
-
|
47
|
-
error.to_s
|
48
|
-
|
49
|
-
assert_equal "undefined method `sizee' for #<File:did_you_mean.gemspec>", Marshal.load(Marshal.dump(error)).original_message
|
50
|
-
end
|
51
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class InitializerNameCorrectionTest < Minitest::Test
|
4
|
-
def test_corrects_wrong_initializer_name
|
5
|
-
assert_output nil, "warning: intialize might be misspelled, perhaps you meant initialize?\n" do
|
6
|
-
Class.new { def intialize; end }
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_does_not_correct_correct_initializer_name
|
11
|
-
assert_output nil, "" do
|
12
|
-
Class.new { def initialize; end }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ExperimentalMethodNameCorrectionTest < Minitest::Test
|
4
|
-
def test_corrects_incorrect_ivar_name
|
5
|
-
@number = 1
|
6
|
-
@nubmer = nil
|
7
|
-
error = assert_raises(NoMethodError) { @nubmer.zero? }
|
8
|
-
remove_instance_variable :@nubmer
|
9
|
-
|
10
|
-
assert_correction :@number, error.corrections
|
11
|
-
assert_match "Did you mean? @number", error.to_s
|
12
|
-
end
|
13
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'minitest/pride'
|
3
|
-
require 'did_you_mean'
|
4
|
-
|
5
|
-
puts "DidYouMean version: #{DidYouMean::VERSION}"
|
6
|
-
|
7
|
-
module DidYouMean::TestHelper
|
8
|
-
def assert_correction(expected, array)
|
9
|
-
assert_equal Array(expected), array, "Expected #{array.inspect} to only include #{expected.inspect}"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
MiniTest::Test.include(DidYouMean::TestHelper)
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class VerboseFormatterTest < Minitest::Test
|
4
|
-
def setup
|
5
|
-
require 'did_you_mean/verbose'
|
6
|
-
|
7
|
-
@error = assert_raises(NameError){ 1.zeor? }
|
8
|
-
end
|
9
|
-
|
10
|
-
def teardown
|
11
|
-
DidYouMean.formatter = DidYouMean::PlainFormatter.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_message
|
15
|
-
assert_equal <<~MESSAGE.chomp, @error.message
|
16
|
-
undefined method `zeor?' for 1:Integer
|
17
|
-
|
18
|
-
Did you mean? zero?
|
19
|
-
|
20
|
-
MESSAGE
|
21
|
-
end
|
22
|
-
end
|