did_you_mean 1.1.2 → 1.1.3
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/lib/did_you_mean/core_ext/name_error.rb +2 -2
- data/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb +5 -2
- data/lib/did_you_mean/version.rb +1 -1
- data/test/core_ext/name_error_extension_test.rb +13 -1
- data/test/edit_distance/jaro_winkler_test.rb +0 -1
- data/test/fixtures/book.rb +4 -0
- data/test/spell_checking/class_name_test.rb +12 -0
- data/test/verbose_formatter_test.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 412c345b8350b7d64bcbcf09ea72178bce0fdb02
|
|
4
|
+
data.tar.gz: 4918c2d1c307b4d30d9b00178d5e62e932b0b042
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ab04de77990d06fe206dbc98424e812d8cdf94df29ec472c30624e3738a2ea9eb9e5b67f931c09a70baf05fb84854ceefbf4d00d03ada0e05cdefa47aa73a5ad
|
|
7
|
+
data.tar.gz: db122760d256332aac2626d3b438e0ed25a33833e9390bfc06ce6fee4ca5623027485315521da541eebafd193c25b251962b92c7a95a0799f5d8925de2010a1b
|
|
@@ -20,11 +20,11 @@ module DidYouMean
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def corrections
|
|
23
|
-
spell_checker.corrections
|
|
23
|
+
@corrections ||= spell_checker.corrections
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def spell_checker
|
|
27
|
-
|
|
27
|
+
SPELL_CHECKERS[self.class.to_s].new(self)
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -6,11 +6,14 @@ module DidYouMean
|
|
|
6
6
|
attr_reader :class_name
|
|
7
7
|
|
|
8
8
|
def initialize(exception)
|
|
9
|
-
@class_name, @receiver = exception.name, exception.receiver
|
|
9
|
+
@class_name, @receiver, @original_message = exception.name, exception.receiver, exception.original_message
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def corrections
|
|
13
|
-
@corrections ||= SpellChecker.new(dictionary: class_names)
|
|
13
|
+
@corrections ||= SpellChecker.new(dictionary: class_names)
|
|
14
|
+
.correct(class_name)
|
|
15
|
+
.map(&:full_name)
|
|
16
|
+
.reject {|qualified_name| @original_message.include?(qualified_name) }
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
def class_names
|
data/lib/did_you_mean/version.rb
CHANGED
|
@@ -20,7 +20,7 @@ class NameErrorExtensionTest < Minitest::Test
|
|
|
20
20
|
|
|
21
21
|
def test_message
|
|
22
22
|
message = <<~MESSAGE.chomp
|
|
23
|
-
undefined local variable or method `doesnt_exist' for #{
|
|
23
|
+
undefined local variable or method `doesnt_exist' for #{to_s}
|
|
24
24
|
Did you mean? does_exist
|
|
25
25
|
MESSAGE
|
|
26
26
|
|
|
@@ -36,6 +36,18 @@ class NameErrorExtensionTest < Minitest::Test
|
|
|
36
36
|
error.to_s
|
|
37
37
|
assert_equal 1, error.to_s.scan("Did you mean?").count
|
|
38
38
|
end
|
|
39
|
+
|
|
40
|
+
def test_correctable_error_objects_are_dumpable
|
|
41
|
+
error = begin
|
|
42
|
+
File.open('./tmp/.keep').sizee
|
|
43
|
+
rescue NoMethodError => e
|
|
44
|
+
e
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
error.to_s
|
|
48
|
+
|
|
49
|
+
assert_equal "undefined method `sizee' for #<File:./tmp/.keep>", Marshal.load(Marshal.dump(error)).original_message
|
|
50
|
+
end
|
|
39
51
|
end
|
|
40
52
|
|
|
41
53
|
class IgnoreCallersTest < Minitest::Test
|
|
@@ -62,4 +62,16 @@ class ClassNameTest < Minitest::Test
|
|
|
62
62
|
error = assert_raises(NameError) { ::Book::Page.new.tableof_contents }
|
|
63
63
|
assert_correction "Book::TableOfContents", error.corrections
|
|
64
64
|
end
|
|
65
|
+
|
|
66
|
+
def test_does_not_suggest_user_input
|
|
67
|
+
error = assert_raises(NameError) { ::Book::Cover }
|
|
68
|
+
|
|
69
|
+
# This is a weird require, but in a multi-threaded condition, a constant may
|
|
70
|
+
# be loaded between when a NameError occurred and when the spell checker
|
|
71
|
+
# attemps to find a possible suggestion. The manual require here simulates
|
|
72
|
+
# a race condition a single test.
|
|
73
|
+
require_relative '../fixtures/book'
|
|
74
|
+
|
|
75
|
+
assert_empty error.corrections
|
|
76
|
+
end
|
|
65
77
|
end
|
|
@@ -8,7 +8,7 @@ class VerboseFormatterTest < Minitest::Test
|
|
|
8
8
|
|
|
9
9
|
def test_message
|
|
10
10
|
assert_equal <<~MESSAGE.chomp, @error.message
|
|
11
|
-
undefined local variable or method `doesnt_exist' for #{
|
|
11
|
+
undefined local variable or method `doesnt_exist' for #{to_s}
|
|
12
12
|
|
|
13
13
|
Did you mean? does_exist
|
|
14
14
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: did_you_mean
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yuki Nishijima
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-03-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -100,6 +100,7 @@ files:
|
|
|
100
100
|
- test/experimental/initializer_name_correction_test.rb
|
|
101
101
|
- test/experimental/key_error_test.rb
|
|
102
102
|
- test/experimental/method_name_checker_test.rb
|
|
103
|
+
- test/fixtures/book.rb
|
|
103
104
|
- test/spell_checker_test.rb
|
|
104
105
|
- test/spell_checking/class_name_test.rb
|
|
105
106
|
- test/spell_checking/method_name_test.rb
|
|
@@ -107,6 +108,7 @@ files:
|
|
|
107
108
|
- test/spell_checking/variable_name_test.rb
|
|
108
109
|
- test/test_helper.rb
|
|
109
110
|
- test/verbose_formatter_test.rb
|
|
111
|
+
- tmp/.keep
|
|
110
112
|
homepage: https://github.com/yuki24/did_you_mean
|
|
111
113
|
licenses:
|
|
112
114
|
- MIT
|
|
@@ -137,6 +139,7 @@ test_files:
|
|
|
137
139
|
- test/experimental/initializer_name_correction_test.rb
|
|
138
140
|
- test/experimental/key_error_test.rb
|
|
139
141
|
- test/experimental/method_name_checker_test.rb
|
|
142
|
+
- test/fixtures/book.rb
|
|
140
143
|
- test/spell_checker_test.rb
|
|
141
144
|
- test/spell_checking/class_name_test.rb
|
|
142
145
|
- test/spell_checking/method_name_test.rb
|