did_you_mean 0.9.10-java → 0.10.0-java

Sign up to get free protection for your applications and to get access to all the features.
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 => "../"