did_you_mean 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|