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.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +1 -0
- data/CHANGELOG.md +110 -28
- data/README.md +52 -13
- data/Rakefile +4 -15
- data/did_you_mean.gemspec +2 -2
- data/doc/CHANGELOG.md.erb +1 -1
- data/lib/did_you_mean/core_ext/name_error.rb +6 -6
- data/lib/did_you_mean/experimental/initializer_name_correction.rb +2 -0
- data/lib/did_you_mean/experimental/ivar_name_correction.rb +36 -9
- data/lib/did_you_mean/experimental.rb +0 -15
- data/lib/did_you_mean/formatters/plain_formatter.rb +33 -0
- data/lib/did_you_mean/formatters/verbose_formatter.rb +49 -0
- data/lib/did_you_mean/spell_checkers/key_error_checker.rb +14 -0
- data/lib/did_you_mean/spell_checkers/method_name_checker.rb +32 -1
- data/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb +6 -2
- data/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb +57 -2
- data/lib/did_you_mean/spell_checkers/name_error_checkers.rb +2 -6
- data/lib/did_you_mean/verbose.rb +4 -0
- data/lib/did_you_mean/version.rb +1 -1
- data/lib/did_you_mean.rb +94 -4
- data/test/core_ext/name_error_extension_test.rb +9 -31
- data/test/edit_distance/jaro_winkler_test.rb +6 -1
- data/test/fixtures/book.rb +4 -0
- data/test/spell_checking/{class_name_test.rb → class_name_check_test.rb} +13 -1
- data/test/spell_checking/key_name_check_test.rb +44 -0
- data/test/spell_checking/{method_name_test.rb → method_name_check_test.rb} +38 -1
- data/test/spell_checking/{uncorrectable_name_test.rb → uncorrectable_name_check_test.rb} +1 -1
- data/test/spell_checking/{variable_name_test.rb → variable_name_check_test.rb} +40 -1
- data/test/verbose_formatter_test.rb +7 -1
- data/tmp/.keep +0 -0
- metadata +21 -20
- data/evaluation/calculator.rb +0 -105
- data/evaluation/dictionary_generator.rb +0 -37
- data/evaluation/incorrect_words.yaml +0 -1159
- data/lib/did_you_mean/experimental/key_error_name_correction.rb +0 -32
- data/lib/did_you_mean/formatter.rb +0 -16
- data/lib/did_you_mean/verbose_formatter.rb +0 -16
- 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
|