did_you_mean 0.9.10-java → 0.10.0-java

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +13 -19
  4. data/CHANGELOG.md +229 -0
  5. data/Gemfile +4 -7
  6. data/README.md +5 -16
  7. data/Rakefile +35 -33
  8. data/benchmark/jaro_winkler/memory_usage.rb +12 -0
  9. data/benchmark/jaro_winkler/speed.rb +14 -0
  10. data/benchmark/levenshtein/memory_usage.rb +12 -0
  11. data/benchmark/levenshtein/speed.rb +17 -0
  12. data/benchmark/memory_usage.rb +31 -0
  13. data/did_you_mean.gemspec +9 -2
  14. data/evaluation/calculator.rb +122 -0
  15. data/evaluation/dictionary_generator.rb +36 -0
  16. data/evaluation/incorrect_words.yaml +1159 -0
  17. data/ext/did_you_mean/extconf.rb +1 -1
  18. data/ext/did_you_mean/{method_missing.c → method_receiver.c} +1 -1
  19. data/lib/did_you_mean.rb +22 -3
  20. data/lib/did_you_mean/core_ext/name_error.rb +30 -22
  21. data/lib/did_you_mean/core_ext/no_method_error.rb +13 -2
  22. data/lib/did_you_mean/core_ext/rubinius.rb +16 -0
  23. data/lib/did_you_mean/finders.rb +48 -17
  24. data/lib/did_you_mean/finders/method_finder.rb +62 -0
  25. data/lib/did_you_mean/finders/name_error_finders.rb +8 -11
  26. data/lib/did_you_mean/finders/name_error_finders/class_finder.rb +77 -0
  27. data/lib/did_you_mean/finders/name_error_finders/name_finder.rb +18 -0
  28. data/lib/did_you_mean/formatter.rb +20 -0
  29. data/lib/did_you_mean/jaro_winkler.rb +87 -0
  30. data/lib/did_you_mean/test_helper.rb +1 -1
  31. data/lib/did_you_mean/version.rb +1 -1
  32. data/test/core_ext/name_error_extension_test.rb +74 -0
  33. data/test/{no_method_error_extension_test.rb → core_ext/no_method_error_extension_test.rb} +1 -1
  34. data/test/correctable/class_name_test.rb +65 -0
  35. data/test/correctable/method_name_test.rb +84 -0
  36. data/test/{null_finder_test.rb → correctable/uncorrectable_name_test.rb} +3 -7
  37. data/test/correctable/variable_name_test.rb +79 -0
  38. data/test/edit_distance/jaro_winkler_test.rb +30 -0
  39. data/test/test_helper.rb +2 -20
  40. data/test/word_collection_test.rb +76 -12
  41. metadata +58 -56
  42. data/Appraisals +0 -23
  43. data/gemfiles/activerecord_32.gemfile +0 -21
  44. data/gemfiles/activerecord_40.gemfile +0 -21
  45. data/gemfiles/activerecord_41.gemfile +0 -21
  46. data/gemfiles/activerecord_42.gemfile +0 -21
  47. data/gemfiles/activerecord_edge.gemfile +0 -25
  48. data/lib/did_you_mean/finders/name_error_finders/similar_class_finder.rb +0 -50
  49. data/lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb +0 -61
  50. data/lib/did_you_mean/finders/similar_attribute_finder.rb +0 -26
  51. data/lib/did_you_mean/finders/similar_method_finder.rb +0 -34
  52. data/lib/did_you_mean/word_collection.rb +0 -30
  53. data/test/all_test.rb +0 -18
  54. data/test/name_error_extension_test.rb +0 -73
  55. data/test/similar_attribute_finder_test.rb +0 -17
  56. data/test/similar_class_finder_test.rb +0 -85
  57. data/test/similar_method_finder_test.rb +0 -60
  58. data/test/similar_name_finder_test.rb +0 -62
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ NAME_ERROR = (___ rescue $!).class
2
+
1
3
  require 'minitest/autorun'
2
4
  require 'minitest/unit'
3
5
  require 'did_you_mean'
@@ -10,23 +12,3 @@ end
10
12
 
11
13
  require 'did_you_mean/test_helper'
12
14
  MiniTest::Test.send :include, DidYouMean::TestHelper
13
-
14
- begin
15
- require 'active_record'
16
-
17
- # database
18
- ActiveRecord::Base.configurations = {'test' => {adapter: 'sqlite3', database: ':memory:'}}
19
- ActiveRecord::Base.establish_connection(:test)
20
-
21
- # models
22
- class User < ActiveRecord::Base; end
23
-
24
- class CreateAllTables < ActiveRecord::Migration
25
- def self.up
26
- create_table(:users) {|t| t.string :first_name }
27
- end
28
- end
29
- ActiveRecord::Migration.verbose = false
30
- CreateAllTables.up
31
- rescue LoadError
32
- end
@@ -1,19 +1,69 @@
1
- require_relative 'test_helper'
1
+ require 'test_helper'
2
2
 
3
- class WordCollectionTest < Minitest::Test
4
- def setup
5
- names = %w(
6
- name12
7
- name123
8
- name1234
9
- name12345
10
- name123456
3
+ class FinderTest < Minitest::Test
4
+ class WordCollection
5
+ include DidYouMean::BaseFinder
6
+
7
+ def initialize(words)
8
+ @words = words
9
+ end
10
+
11
+ def similar_to(input, filter = EMPTY)
12
+ @suggestions, @input = nil, input
13
+
14
+ suggestions
15
+ end
16
+
17
+ def searches
18
+ { @input => @words }
19
+ end
20
+ end
21
+
22
+ def test_similar_to_corrects_mistypes
23
+
24
+ assert_suggestion 'foo', collection('foo', 'fork') .similar_to('doo')
25
+ assert_suggestion 'email', collection('email', 'fail', 'eval').similar_to('meail')
26
+ assert_suggestion 'fail', collection('email', 'fail', 'eval').similar_to('fial')
27
+ assert_suggestion 'fail', collection('email', 'fail', 'eval').similar_to('afil')
28
+ assert_suggestion 'eval', collection('email', 'fail', 'eval').similar_to('eavl')
29
+ assert_suggestion 'eval', collection('email', 'fail', 'eval').similar_to('veal')
30
+ assert_suggestion 'sub!', collection('sub', 'gsub', 'sub!') .similar_to('suv!')
31
+ assert_suggestion 'sub', collection('sub', 'gsub', 'sub!') .similar_to('suv')
32
+
33
+ assert_equal %w(gsub! gsub), collection('sub', 'gsub', 'gsub!').similar_to('gsuv!')
34
+ assert_equal %w(sub! sub gsub!), collection('sub', 'sub!', 'gsub', 'gsub!').similar_to('ssub!')
35
+
36
+ group_methods = %w(groups group_url groups_url group_path)
37
+ assert_suggestion 'groups', collection(group_methods).similar_to('group')
38
+
39
+ group_classes = %w(
40
+ GroupMembership
41
+ GroupMembershipPolicy
42
+ GroupMembershipDecorator
43
+ GroupMembershipSerializer
44
+ GroupHelper
45
+ Group
46
+ GroupMailer
47
+ NullGroupMembership
11
48
  )
12
49
 
13
- @word_collection = DidYouMean::WordCollection.new(names)
50
+ #assert_suggestion 'GroupMembership', collection(group_classes).similar_to('GroupMemberhip')
51
+ assert_suggestion 'GroupMembershipDecorator', collection(group_classes).similar_to('GroupMemberhipDecorator')
52
+
53
+ names = %w(first_name_change first_name_changed? first_name_will_change!)
54
+ assert_equal names, collection(names).similar_to('first_name_change!')
55
+
56
+ assert_empty collection('proc').similar_to 'product_path'
57
+ assert_empty collection('fork').similar_to 'fooo'
14
58
  end
15
59
 
16
- def test_similar_to
60
+ def test_similar_to_corrects_misspells
61
+ assert_suggestion 'descendants', collection('descendants') .similar_to('dependents')
62
+ assert_suggestion 'drag_to', collection('drag_to') .similar_to('drag')
63
+ assert_suggestion 'set_result_count', collection('set_result_count').similar_to('set_result')
64
+ end
65
+
66
+ def test_similar_to_sorts_results_by_simiarity
17
67
  expected = %w(
18
68
  name123456
19
69
  name12345
@@ -21,6 +71,20 @@ class WordCollectionTest < Minitest::Test
21
71
  name123
22
72
  )
23
73
 
24
- assert_equal expected, @word_collection.similar_to("name123456")
74
+ actual = WordCollection.new(%w(
75
+ name12
76
+ name123
77
+ name1234
78
+ name12345
79
+ name123456
80
+ )).similar_to("name123456")
81
+
82
+ assert_equal expected, actual
83
+ end
84
+
85
+ private
86
+
87
+ def collection(*args)
88
+ WordCollection.new(args.flatten)
25
89
  end
26
90
  end
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: did_you_mean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 0.10.0
5
5
  platform: java
6
6
  authors:
7
7
  - Yuki Nishijima
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-14 00:00:00.000000000 Z
11
+ date: 2015-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: interception
15
- requirement: !ruby/object:Gem::Requirement
15
+ version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
20
+ requirement: !ruby/object:Gem::Requirement
23
21
  requirements:
24
22
  - - ">="
25
23
  - !ruby/object:Gem::Version
26
24
  version: '0'
25
+ prerelease: false
26
+ type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
- requirement: !ruby/object:Gem::Requirement
29
+ version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.5'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
37
35
  requirements:
38
36
  - - "~>"
39
37
  - !ruby/object:Gem::Version
40
38
  version: '1.5'
39
+ prerelease: false
40
+ type: :development
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
- requirement: !ruby/object:Gem::Requirement
43
+ version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
51
49
  requirements:
52
50
  - - ">="
53
51
  - !ruby/object:Gem::Version
54
52
  version: '0'
53
+ prerelease: false
54
+ type: :development
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake-compiler
57
- requirement: !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
62
+ requirement: !ruby/object:Gem::Requirement
65
63
  requirements:
66
64
  - - ">="
67
65
  - !ruby/object:Gem::Version
68
66
  version: '0'
67
+ prerelease: false
68
+ type: :development
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
- requirement: !ruby/object:Gem::Requirement
71
+ version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
76
+ requirement: !ruby/object:Gem::Requirement
79
77
  requirements:
80
78
  - - ">="
81
79
  - !ruby/object:Gem::Version
82
80
  version: '0'
81
+ prerelease: false
82
+ type: :development
83
83
  description: '"did you mean?" experience in Ruby: the error message will tell you
84
84
  the right one when you misspelled something.'
85
85
  email:
@@ -90,50 +90,53 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - ".gitignore"
92
92
  - ".travis.yml"
93
- - Appraisals
93
+ - CHANGELOG.md
94
94
  - Gemfile
95
95
  - LICENSE.txt
96
96
  - README.md
97
97
  - Rakefile
98
+ - benchmark/jaro_winkler/memory_usage.rb
99
+ - benchmark/jaro_winkler/speed.rb
100
+ - benchmark/levenshtein/memory_usage.rb
101
+ - benchmark/levenshtein/speed.rb
102
+ - benchmark/memory_usage.rb
98
103
  - did_you_mean.gemspec
99
104
  - doc/CHANGELOG.md.erb
100
105
  - doc/changelog_generator.rb
101
106
  - doc/did_you_mean_example.png
107
+ - evaluation/calculator.rb
108
+ - evaluation/dictionary_generator.rb
109
+ - evaluation/incorrect_words.yaml
102
110
  - ext/did_you_mean/extconf.rb
103
- - ext/did_you_mean/method_missing.c
104
- - gemfiles/activerecord_32.gemfile
105
- - gemfiles/activerecord_40.gemfile
106
- - gemfiles/activerecord_41.gemfile
107
- - gemfiles/activerecord_42.gemfile
108
- - gemfiles/activerecord_edge.gemfile
111
+ - ext/did_you_mean/method_receiver.c
109
112
  - lib/did_you_mean.rb
110
113
  - lib/did_you_mean/core_ext/name_error.rb
111
114
  - lib/did_you_mean/core_ext/no_method_error.rb
115
+ - lib/did_you_mean/core_ext/rubinius.rb
112
116
  - lib/did_you_mean/finders.rb
117
+ - lib/did_you_mean/finders/method_finder.rb
113
118
  - lib/did_you_mean/finders/name_error_finders.rb
114
- - lib/did_you_mean/finders/name_error_finders/similar_class_finder.rb
115
- - lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
116
- - lib/did_you_mean/finders/similar_attribute_finder.rb
117
- - lib/did_you_mean/finders/similar_method_finder.rb
119
+ - lib/did_you_mean/finders/name_error_finders/class_finder.rb
120
+ - lib/did_you_mean/finders/name_error_finders/name_finder.rb
121
+ - lib/did_you_mean/formatter.rb
122
+ - lib/did_you_mean/jaro_winkler.rb
118
123
  - lib/did_you_mean/levenshtein.rb
119
124
  - lib/did_you_mean/test_helper.rb
120
125
  - lib/did_you_mean/version.rb
121
- - lib/did_you_mean/word_collection.rb
122
- - test/all_test.rb
123
- - test/name_error_extension_test.rb
124
- - test/no_method_error_extension_test.rb
125
- - test/null_finder_test.rb
126
- - test/similar_attribute_finder_test.rb
127
- - test/similar_class_finder_test.rb
128
- - test/similar_method_finder_test.rb
129
- - test/similar_name_finder_test.rb
126
+ - test/core_ext/name_error_extension_test.rb
127
+ - test/core_ext/no_method_error_extension_test.rb
128
+ - test/correctable/class_name_test.rb
129
+ - test/correctable/method_name_test.rb
130
+ - test/correctable/uncorrectable_name_test.rb
131
+ - test/correctable/variable_name_test.rb
132
+ - test/edit_distance/jaro_winkler_test.rb
130
133
  - test/test_helper.rb
131
134
  - test/word_collection_test.rb
132
135
  homepage: https://github.com/yuki24/did_you_mean
133
136
  licenses:
134
137
  - MIT
135
138
  metadata: {}
136
- post_install_message:
139
+ post_install_message:
137
140
  rdoc_options: []
138
141
  require_paths:
139
142
  - lib
@@ -141,26 +144,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
144
  requirements:
142
145
  - - ">="
143
146
  - !ruby/object:Gem::Version
144
- version: '0'
147
+ version: 1.9.3
145
148
  required_rubygems_version: !ruby/object:Gem::Requirement
146
149
  requirements:
147
150
  - - ">="
148
151
  - !ruby/object:Gem::Version
149
152
  version: '0'
150
153
  requirements: []
151
- rubyforge_project:
152
- rubygems_version: 2.4.6
153
- signing_key:
154
+ rubyforge_project:
155
+ rubygems_version: 2.4.8
156
+ signing_key:
154
157
  specification_version: 4
155
158
  summary: '"Did you mean?" experience in Ruby'
156
159
  test_files:
157
- - test/all_test.rb
158
- - test/name_error_extension_test.rb
159
- - test/no_method_error_extension_test.rb
160
- - test/null_finder_test.rb
161
- - test/similar_attribute_finder_test.rb
162
- - test/similar_class_finder_test.rb
163
- - test/similar_method_finder_test.rb
164
- - test/similar_name_finder_test.rb
160
+ - test/core_ext/name_error_extension_test.rb
161
+ - test/core_ext/no_method_error_extension_test.rb
162
+ - test/correctable/class_name_test.rb
163
+ - test/correctable/method_name_test.rb
164
+ - test/correctable/uncorrectable_name_test.rb
165
+ - test/correctable/variable_name_test.rb
166
+ - test/edit_distance/jaro_winkler_test.rb
165
167
  - test/test_helper.rb
166
168
  - test/word_collection_test.rb
data/Appraisals DELETED
@@ -1,23 +0,0 @@
1
- appraise "activerecord_32" do
2
- gem "activerecord", "~> 3.2.0"
3
- end
4
-
5
- appraise "activerecord_40" do
6
- gem "activerecord", "~> 4.0.0"
7
- end
8
-
9
- appraise "activerecord_41" do
10
- gem "activerecord", "~> 4.1.0"
11
- end
12
-
13
- appraise "activerecord_42" do
14
- gem "activerecord", "~> 4.2.0"
15
- end
16
-
17
- appraise "activerecord_edge" do
18
- git 'git://github.com/rails/rails.git' do
19
- gem 'activerecord', require: 'activerecord'
20
- end
21
-
22
- gem 'arel', :github => 'rails/arel'
23
- end
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 3.2.0"
6
-
7
- platforms :ruby do
8
- gem "sqlite3"
9
- end
10
-
11
- platforms :jruby do
12
- gem "activerecord-jdbcsqlite3-adapter"
13
- end
14
-
15
- platforms :rbx do
16
- gem "rubysl", "~> 2.0"
17
- gem "racc"
18
- gem "rubinius-developer_tools"
19
- end
20
-
21
- gemspec :path => "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.0.0"
6
-
7
- platforms :ruby do
8
- gem "sqlite3"
9
- end
10
-
11
- platforms :jruby do
12
- gem "activerecord-jdbcsqlite3-adapter"
13
- end
14
-
15
- platforms :rbx do
16
- gem "rubysl", "~> 2.0"
17
- gem "racc"
18
- gem "rubinius-developer_tools"
19
- end
20
-
21
- gemspec :path => "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.1.0"
6
-
7
- platforms :ruby do
8
- gem "sqlite3"
9
- end
10
-
11
- platforms :jruby do
12
- gem "activerecord-jdbcsqlite3-adapter"
13
- end
14
-
15
- platforms :rbx do
16
- gem "rubysl", "~> 2.0"
17
- gem "racc"
18
- gem "rubinius-developer_tools"
19
- end
20
-
21
- gemspec :path => "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.2.0"
6
-
7
- platforms :ruby do
8
- gem "sqlite3"
9
- end
10
-
11
- platforms :jruby do
12
- gem "activerecord-jdbcsqlite3-adapter"
13
- end
14
-
15
- platforms :rbx do
16
- gem "rubysl", "~> 2.0"
17
- gem "racc"
18
- gem "rubinius-developer_tools"
19
- end
20
-
21
- gemspec :path => "../"