did_you_mean 1.0.3 → 1.0.4
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 +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95c8a3e5873fe852e2de4de33e70ada6b4695bf5
|
4
|
+
data.tar.gz: ab23c8333c2fb0c3df66b804a1fc1274eb21674c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b1d6d10f8e658fa070c97752ff09b961b57b53f71a434546a81b522f87a32129c25a398efc55a3076ed617ac9b3a6414c0005d7c0492c89d55f1398de618c23
|
7
|
+
data.tar.gz: 47631c99fab406a57242310173b0f4154c00b70bc8ca113f665f0b93710625c3d3811f3e352e2d181a4ffd8ca89d855b792775919d98ffec68700b4dab5a40a0
|
@@ -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/file').sizee
|
43
|
+
rescue NoMethodError => e
|
44
|
+
e
|
45
|
+
end
|
46
|
+
|
47
|
+
error.to_s
|
48
|
+
|
49
|
+
assert_equal "undefined method `sizee' for #<File:/tmp/file>", 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
|
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.0.
|
4
|
+
version: 1.0.4
|
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
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- test/experimental/initializer_name_correction_test.rb
|
103
103
|
- test/experimental/key_error_test.rb
|
104
104
|
- test/experimental/method_name_checker_test.rb
|
105
|
+
- test/fixtures/book.rb
|
105
106
|
- test/spell_checker_test.rb
|
106
107
|
- test/spell_checking/class_name_test.rb
|
107
108
|
- test/spell_checking/method_name_test.rb
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- test/spell_checking/variable_name_test.rb
|
110
111
|
- test/test_helper.rb
|
111
112
|
- test/verbose_formatter_test.rb
|
113
|
+
- tmp/.keep
|
112
114
|
homepage: https://github.com/yuki24/did_you_mean
|
113
115
|
licenses:
|
114
116
|
- MIT
|
@@ -129,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
131
|
version: '0'
|
130
132
|
requirements: []
|
131
133
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.5.2.3
|
133
135
|
signing_key:
|
134
136
|
specification_version: 4
|
135
137
|
summary: '"Did you mean?" experience in Ruby'
|
@@ -140,6 +142,7 @@ test_files:
|
|
140
142
|
- test/experimental/initializer_name_correction_test.rb
|
141
143
|
- test/experimental/key_error_test.rb
|
142
144
|
- test/experimental/method_name_checker_test.rb
|
145
|
+
- test/fixtures/book.rb
|
143
146
|
- test/spell_checker_test.rb
|
144
147
|
- test/spell_checking/class_name_test.rb
|
145
148
|
- test/spell_checking/method_name_test.rb
|