did_you_mean 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +1 -0
  4. data/CHANGELOG.md +110 -28
  5. data/README.md +52 -13
  6. data/Rakefile +4 -15
  7. data/did_you_mean.gemspec +2 -2
  8. data/doc/CHANGELOG.md.erb +1 -1
  9. data/lib/did_you_mean/core_ext/name_error.rb +6 -6
  10. data/lib/did_you_mean/experimental/initializer_name_correction.rb +2 -0
  11. data/lib/did_you_mean/experimental/ivar_name_correction.rb +36 -9
  12. data/lib/did_you_mean/experimental.rb +0 -15
  13. data/lib/did_you_mean/formatters/plain_formatter.rb +33 -0
  14. data/lib/did_you_mean/formatters/verbose_formatter.rb +49 -0
  15. data/lib/did_you_mean/spell_checkers/key_error_checker.rb +14 -0
  16. data/lib/did_you_mean/spell_checkers/method_name_checker.rb +32 -1
  17. data/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb +6 -2
  18. data/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb +57 -2
  19. data/lib/did_you_mean/spell_checkers/name_error_checkers.rb +2 -6
  20. data/lib/did_you_mean/verbose.rb +4 -0
  21. data/lib/did_you_mean/version.rb +1 -1
  22. data/lib/did_you_mean.rb +94 -4
  23. data/test/core_ext/name_error_extension_test.rb +9 -31
  24. data/test/edit_distance/jaro_winkler_test.rb +6 -1
  25. data/test/fixtures/book.rb +4 -0
  26. data/test/spell_checking/{class_name_test.rb → class_name_check_test.rb} +13 -1
  27. data/test/spell_checking/key_name_check_test.rb +44 -0
  28. data/test/spell_checking/{method_name_test.rb → method_name_check_test.rb} +38 -1
  29. data/test/spell_checking/{uncorrectable_name_test.rb → uncorrectable_name_check_test.rb} +1 -1
  30. data/test/spell_checking/{variable_name_test.rb → variable_name_check_test.rb} +40 -1
  31. data/test/verbose_formatter_test.rb +7 -1
  32. data/tmp/.keep +0 -0
  33. metadata +21 -20
  34. data/evaluation/calculator.rb +0 -105
  35. data/evaluation/dictionary_generator.rb +0 -37
  36. data/evaluation/incorrect_words.yaml +0 -1159
  37. data/lib/did_you_mean/experimental/key_error_name_correction.rb +0 -32
  38. data/lib/did_you_mean/formatter.rb +0 -16
  39. data/lib/did_you_mean/verbose_formatter.rb +0 -16
  40. data/test/experimental/key_error_test.rb +0 -15
@@ -1,32 +0,0 @@
1
- module DidYouMean
2
- module Experimental
3
- module KeyErrorWithNameAndKeys
4
- FILE_REGEXP = %r"#{Regexp.quote(__FILE__)}"
5
-
6
- def fetch(name, *)
7
- super
8
- rescue KeyError => e
9
- e.instance_variable_set(:@name, name)
10
- e.instance_variable_set(:@keys, keys)
11
- $@.delete_if { |s| FILE_REGEXP =~ s } if $@
12
-
13
- raise e
14
- end
15
- end
16
- Hash.prepend KeyErrorWithNameAndKeys
17
-
18
- class KeyNameChecker
19
- def initialize(key_error)
20
- @name = key_error.instance_variable_get(:@name)
21
- @keys = key_error.instance_variable_get(:@keys)
22
- end
23
-
24
- def corrections
25
- @corrections ||= SpellChecker.new(dictionary: @keys).correct(@name).map(&:inspect)
26
- end
27
- end
28
-
29
- SPELL_CHECKERS["KeyError"] = KeyNameChecker
30
- KeyError.prepend DidYouMean::Correctable
31
- end
32
- end
@@ -1,16 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module DidYouMean
4
- class Formatter
5
- def initialize(corrections = [])
6
- @corrections = corrections
7
- end
8
-
9
- def to_s
10
- return "" if @corrections.empty?
11
-
12
- output = "\nDid you mean? ".dup
13
- output << @corrections.join("\n ")
14
- end
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- # frozen-string-literal: true
2
- require 'did_you_mean/formatter'
3
-
4
- module DidYouMean
5
- module VerboseFormatter
6
- prepend_features DidYouMean::Formatter
7
-
8
- def to_s
9
- return "" if @corrections.empty?
10
-
11
- output = "\n\n Did you mean? ".dup
12
- output << @corrections.join("\n ")
13
- output << "\n "
14
- end
15
- end
16
- end
@@ -1,15 +0,0 @@
1
- require "test_helper"
2
-
3
- class ExperimentalKeyErrorNameCorrectionTest < Minitest::Test
4
- def test_corrects_hash_key_name
5
- hash = { "foo" => 1, bar: 2 }
6
-
7
- error = assert_raises(KeyError) { hash.fetch(:bax) }
8
- assert_correction ":bar", error.corrections
9
- assert_match "Did you mean? :bar", error.to_s
10
-
11
- error = assert_raises(KeyError) { hash.fetch("fooo") }
12
- assert_correction %("foo"), error.corrections
13
- assert_match %(Did you mean? "foo"), error.to_s
14
- end
15
- end