guessmethod 0.1.3 → 0.2.0

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.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.2.0 2007-12-06
2
+
3
+ * GuessRakeTask is all new. It's GuessMethod for rake!
4
+ * bin/grake
5
+ * Split GuessMethod into various files in lib.
6
+
1
7
  == 0.1.3 2007-11-16
2
8
 
3
9
  * Cleaned up / reworked comments and spec to reflect the fact that the original method/const_missing goes first.
data/Manifest.txt CHANGED
@@ -5,7 +5,14 @@ README.txt
5
5
  Rakefile
6
6
  lib/guessmethod.rb
7
7
  lib/guessmethod/version.rb
8
+ lib/guessmethod/guesser.rb
9
+ lib/guessmethod/constant.rb
10
+ lib/guessmethod/outputter.rb
11
+ lib/guessmethod/method.rb
12
+ lib/guessmethod/rake.rb
13
+ lib/guessmethod/options.rb
8
14
  lib/string/levenshtein.rb
15
+ bin/grake
9
16
  scripts/txt2html
10
17
  setup.rb
11
18
  spec/guessmethod_spec.rb
data/bin/grake ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'guessmethod/rake'
5
+
6
+ Rake.application.run
@@ -0,0 +1,40 @@
1
+ module GuessMethod
2
+ # The GuessConstant module aliases out const_missing and
3
+ # replaces it with its own, which attempts to find a
4
+ # similarly named constant for the object at hand
5
+ # if the original method_missing fails.
6
+ module GuessConstant
7
+ def self.extended(base) #:nodoc:
8
+ base.class_eval do
9
+ class << self
10
+ alias_method :unguessed_const_missing, :const_missing
11
+ alias_method :const_missing, :guess_const_missing
12
+ end
13
+ end
14
+ end
15
+
16
+ def guess_const_missing(sym)
17
+ if GuessMethodOptions[:active]
18
+ begin
19
+ return unguessed_const_missing(sym)
20
+ rescue NameError => e
21
+ possible_consts = GuessMethodGuesser.find_closest(self.constants, sym)
22
+ case possible_consts.size
23
+ when 1
24
+ call_const = possible_consts.first
25
+ $stderr.puts GuessMethodOutputter.replacing_const(sym, call_const, self)
26
+ self.const_get(call_const)
27
+ when 0
28
+ $stderr.puts GuessMethodOutputter.no_const_in_threshold(sym, self)
29
+ raise e
30
+ else
31
+ $stderr.puts GuessMethodOutputter.ambigious_const(sym, possible_consts, self)
32
+ raise e
33
+ end
34
+ end
35
+ else
36
+ unguessed_const_missing(sym)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,21 @@
1
+ require 'guessmethod/options'
2
+ require 'string/levenshtein'
3
+
4
+ module GuessMethod
5
+ # GuessMethodGuesser uses map, min, and levensthtein to find the closest
6
+ # match(es) in an array of strings
7
+ class GuessMethodGuesser
8
+ def self.find_closest(haystack, needle)
9
+ closest_distance = haystack.map {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase,
10
+ GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight],
11
+ GuessMethodOptions[:substitution_weight])}.min || 0
12
+ if closest_distance <= GuessMethodOptions[:threshold]
13
+ haystack.find_all {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase,
14
+ GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight],
15
+ GuessMethodOptions[:substitution_weight]) == closest_distance}
16
+ else
17
+ []
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ module GuessMethod
2
+
3
+ def guess_method_missing(meth, *args, &block)
4
+ if GuessMethodOptions[:active]
5
+ begin
6
+ unguessed_method_missing(meth, *args, &block)
7
+ rescue NoMethodError, NameError => e
8
+ possible_methods = GuessMethodGuesser.find_closest(self.methods, meth)
9
+ case possible_methods.size
10
+ when 1
11
+ call_method = possible_methods.first
12
+ $stderr.puts GuessMethodOutputter.replacing_method(meth, call_method, self)
13
+ self.send(call_method, *args, &block)
14
+ when 0
15
+ $stderr.puts GuessMethodOutputter.no_method_in_threshold(meth, self)
16
+ raise e
17
+ else
18
+ $stderr.puts GuessMethodOutputter.ambiguous_method(meth, possible_methods, self)
19
+ raise e
20
+ end
21
+ end
22
+ else
23
+ unguessed_method_missing(meth, *args, &block)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ module GuessMethod
2
+ GuessMethodOptions = {
3
+ :insert_weight => 1,
4
+ :delete_weight => 1,
5
+ :substitution_weight => 1,
6
+ :threshold => 2,
7
+ :max_inspect_length => 25,
8
+ :active => true
9
+ }
10
+ end
@@ -0,0 +1,105 @@
1
+ module GuessMethod
2
+ # GuessMethodOutputter uses a little Formatter class for colorization
3
+ class GuessMethodOutputter
4
+
5
+ class Formatter
6
+ ColorCodes = {
7
+ :bold => '1',
8
+ :red => '31',
9
+ :green => '32',
10
+ :cyan => '36'
11
+ }
12
+
13
+ # Returns an ANSI colorized string (for a limited set of options, see ColorCodes)
14
+ def self.color(text, *colors)
15
+ format = colors.map {|color| ColorCodes[color]}.join(';')
16
+ "\e[#{format}m#{text}\e[0m"
17
+ end
18
+ end
19
+
20
+ def self.object(obj) #:nodoc:
21
+ inspected = obj.inspect
22
+ if obj.inspect.length > GuessMethodOptions[:max_inspect_length]
23
+ Formatter.color("#<#{obj.class}:0x#{(obj.object_id*2).to_s(16)}>", :green)
24
+ else
25
+ Formatter.color(obj.inspect, :green, :bold) << ':' << Formatter.color(obj.class, :green)
26
+ end
27
+ end
28
+
29
+ def self.ambiguous_method(meth, possibilities, obj) #:nodoc:
30
+ Formatter.color('ambigious method:', :red) <<
31
+ ' ' <<
32
+ Formatter.color(meth, :green) <<
33
+ ', possible matches ' <<
34
+ possibilities.map {|m| Formatter.color(m, :cyan)}.join(', ') <<
35
+ ' for ' <<
36
+ GuessMethodOutputter.object(obj)
37
+ end
38
+
39
+ def self.no_method_in_threshold(meth, obj) #:nodoc:
40
+ Formatter.color('no method in threshold: ', :red) <<
41
+ Formatter.color(meth, :green) <<
42
+ ' for ' <<
43
+ GuessMethodOutputter.object(obj)
44
+ end
45
+
46
+ def self.replacing_method(meth, call_method, obj) #:nodoc:
47
+ Formatter.color('attention:', :red) <<
48
+ ' sending ' <<
49
+ Formatter.color(call_method, :cyan) <<
50
+ ' instead of ' <<
51
+ Formatter.color(meth, :cyan) <<
52
+ ' to ' <<
53
+ GuessMethodOutputter.object(obj)
54
+ end
55
+
56
+ def self.ambigious_const(sym, possibilities, obj) #:nodoc:
57
+ Formatter.color('ambigious constant:', :red) <<
58
+ ' ' <<
59
+ Formatter.color(sym, :green) <<
60
+ ', possible matches ' <<
61
+ possibilities.map {|m| Formatter.color(m, :cyan)}.join(', ') <<
62
+ ' for ' <<
63
+ Formatter.color(obj, :green, :bold)
64
+ end
65
+
66
+ def self.no_const_in_threshold(sym, obj) #:nodoc:
67
+ Formatter.color('no constant in threshold: ', :red) <<
68
+ Formatter.color(sym, :green) <<
69
+ ' for ' <<
70
+ Formatter.color(obj, :green, :bold)
71
+ end
72
+
73
+ def self.replacing_const(sym, call_const, obj) #:nodoc:
74
+ Formatter.color('attention:', :red) <<
75
+ ' replacing non-existant constant ' <<
76
+ Formatter.color(sym, :cyan) <<
77
+ ' with ' <<
78
+ Formatter.color(call_const, :cyan) <<
79
+ ' for ' <<
80
+ Formatter.color(obj, :green, :bold)
81
+ end
82
+
83
+ def self.replacing_rake_task(task, call_task) #:nodoc:
84
+ Formatter.color('attention:', :red) <<
85
+ ' invoking task ' <<
86
+ Formatter.color(call_task, :cyan) <<
87
+ ' instead of ' <<
88
+ Formatter.color(task, :cyan)
89
+ end
90
+
91
+ def self.no_rake_task_in_threshold(task) #:nodoc:
92
+ Formatter.color('no rake task in threshold: ', :red) <<
93
+ Formatter.color(task, :green)
94
+ end
95
+
96
+ def self.ambigous_rake_task(task, possibilities) #:nodoc:
97
+ Formatter.color('ambigious rake task:', :red) <<
98
+ ' ' <<
99
+ Formatter.color(task, :green) <<
100
+ ', possible matches ' <<
101
+ possibilities.map {|m| Formatter.color(m, :cyan)}.join(', ')
102
+ end
103
+
104
+ end
105
+ end
@@ -0,0 +1,46 @@
1
+ require 'rake'
2
+ require 'guessmethod/guesser'
3
+ require 'guessmethod/outputter'
4
+
5
+ # GuessRakeTask is pretty much a bad idea gone worse. When included into
6
+ # Rake::TaskManager, it overtakes TaskManager's [] method and tries to
7
+ # guess when the task lookup fails. Use via the grake command, or
8
+ # by adding "require 'guessmethod/rake'" to the top of your Rakefiles.
9
+ module GuessRakeTask
10
+
11
+ def self.included(base)
12
+ base.class_eval do
13
+ alias_method :unguessed_brackets, :[]
14
+ alias_method :[], :guess_brackets
15
+ end
16
+ end
17
+
18
+ # GuessRakeTask's magic. Go for Rake::TaskManager's [] lookup first,
19
+ # then guess at it if it fails.
20
+ def guess_brackets(task_name, scopes=nil)
21
+ begin
22
+ unguessed_brackets(task_name, scopes)
23
+ rescue RuntimeError => e
24
+ possible_tasks = GuessMethod::GuessMethodGuesser.find_closest(@tasks.keys, task_name)
25
+ case possible_tasks.size
26
+ when 1
27
+ task_to_call = possible_tasks.first
28
+ $stderr.puts GuessMethod::GuessMethodOutputter.replacing_rake_task(task_name, task_to_call)
29
+ unguessed_brackets(task_to_call, scopes)
30
+ when 0
31
+ $stderr.puts GuessMethod::GuessMethodOutputter.no_rake_task_in_threshold(task_name)
32
+ raise e
33
+ else
34
+ $stderr.puts GuessMethod::GuessMethodOutputter.ambigous_rake_task(task_name, possible_tasks)
35
+ raise e
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ module Rake #:nodoc:
43
+ module TaskManager #:nodoc:
44
+ include GuessRakeTask
45
+ end
46
+ end
@@ -1,8 +1,8 @@
1
- module GuessMethod #:nodoc:
1
+ module GuessMethod
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 1
5
- TINY = 3
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/guessmethod.rb CHANGED
@@ -1,20 +1,9 @@
1
- require 'string/levenshtein'
2
-
3
1
  # The GuessMethod module aliases out method_missing and
4
2
  # replaces it with its own, which attempts to find a
5
3
  # similarly named method callable on the object at hand
6
4
  # if the objects original method_missing fails.
7
5
  module GuessMethod
8
6
 
9
- GuessMethodOptions = {
10
- :insert_weight => 1,
11
- :delete_weight => 1,
12
- :substitution_weight => 1,
13
- :threshold => 2,
14
- :max_inspect_length => 25,
15
- :active => true
16
- }
17
-
18
7
  def self.included(base)
19
8
  base.class_eval do
20
9
  unless method_defined? :method_missing
@@ -27,172 +16,15 @@ module GuessMethod
27
16
  end
28
17
  end
29
18
 
30
- def guess_method_missing(meth, *args, &block)
31
- if GuessMethodOptions[:active]
32
- begin
33
- unguessed_method_missing(meth, *args, &block)
34
- rescue NoMethodError, NameError => e
35
- possible_methods = GuessMethodGuesser.find_closest(self.methods, meth)
36
- case possible_methods.size
37
- when 1
38
- call_method = possible_methods.first
39
- $stderr.puts GuessMethodOutputter.replacing_method(meth, call_method, self)
40
- self.send(call_method, *args, &block)
41
- when 0
42
- $stderr.puts GuessMethodOutputter.no_method_in_threshold(meth, self)
43
- raise e
44
- else
45
- $stderr.puts GuessMethodOutputter.ambiguous_method(meth, possible_methods, self)
46
- raise e
47
- end
48
- end
49
- else
50
- unguessed_method_missing(meth, *args, &block)
51
- end
52
- end
53
-
54
- # The GuessConstant module aliases out const_missing and
55
- # replaces it with its own, which attempts to find a
56
- # similarly named constant for the object at hand
57
- # if the original method_missing fails.
58
- module GuessConstant
59
- def self.extended(base) #:nodoc:
60
- base.class_eval do
61
- class << self
62
- alias_method :unguessed_const_missing, :const_missing
63
- alias_method :const_missing, :guess_const_missing
64
- end
65
- end
66
- end
67
-
68
- def guess_const_missing(sym)
69
- if GuessMethodOptions[:active]
70
- begin
71
- return unguessed_const_missing(sym)
72
- rescue NameError => e
73
- possible_consts = GuessMethodGuesser.find_closest(self.constants, sym)
74
- case possible_consts.size
75
- when 1
76
- call_const = possible_consts.first
77
- $stderr.puts GuessMethodOutputter.replacing_const(sym, call_const, self)
78
- self.const_get(call_const)
79
- when 0
80
- $stderr.puts GuessMethodOutputter.no_const_in_threshold(sym, self)
81
- raise e
82
- else
83
- $stderr.puts GuessMethodOutputter.ambigious_const(sym, possible_consts, self)
84
- raise e
85
- end
86
- end
87
- else
88
- unguessed_const_missing(sym)
89
- end
90
- end
91
- end
92
-
93
- # GuessMethodGuesser uses map, min, and levensthtein to find the closest
94
- # match(es) in an array of strings
95
- class GuessMethodGuesser
96
- def self.find_closest(haystack, needle)
97
- closest_distance = haystack.map {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase,
98
- GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight],
99
- GuessMethodOptions[:substitution_weight])}.min || 0
100
- if closest_distance <= GuessMethodOptions[:threshold]
101
- haystack.find_all {|x| x.to_s.downcase.levenshtein(needle.to_s.downcase,
102
- GuessMethodOptions[:insert_weight], GuessMethodOptions[:delete_weight],
103
- GuessMethodOptions[:substitution_weight]) == closest_distance}
104
- else
105
- []
106
- end
107
- end
108
- end
109
-
110
- # GuessMethodOutputter uses a little Formatter class for colorization
111
- class GuessMethodOutputter
112
-
113
- class Formatter
114
- ColorCodes = {
115
- :bold => '1',
116
- :red => '31',
117
- :green => '32',
118
- :cyan => '36'
119
- }
120
-
121
- # Returns an ANSI colorized string (for a limited set of options, see ColorCodes)
122
- def self.color(text, *colors)
123
- format = colors.map {|color| ColorCodes[color]}.join(';')
124
- "\e[#{format}m#{text}\e[0m"
125
- end
126
- end
127
-
128
- def self.object(obj) #:nodoc:
129
- inspected = obj.inspect
130
- if obj.inspect.length > GuessMethodOptions[:max_inspect_length]
131
- Formatter.color("#<#{obj.class}:0x#{(obj.object_id*2).to_s(16)}>", :green)
132
- else
133
- Formatter.color(obj.inspect, :green, :bold) << ':' << Formatter.color(obj.class, :green)
134
- end
135
- end
136
-
137
- def self.ambiguous_method(meth, possibilities, obj) #:nodoc:
138
- Formatter.color('ambigious method:', :red) <<
139
- ' ' <<
140
- Formatter.color(meth, :green) <<
141
- ' possible matches ' <<
142
- possibilities.map {|m| Formatter.color(m, :cyan)}.join(', ') <<
143
- ' for ' <<
144
- GuessMethodOutputter.object(obj)
145
- end
146
-
147
- def self.no_method_in_threshold(meth, obj) #:nodoc:
148
- Formatter.color('no method in threshold: ', :red) <<
149
- Formatter.color(meth, :green) <<
150
- ' for ' <<
151
- GuessMethodOutputter.object(obj)
152
- end
153
-
154
- def self.replacing_method(meth, call_method, obj) #:nodoc:
155
- Formatter.color('attention:', :red) <<
156
- ' sending ' <<
157
- Formatter.color(call_method, :cyan) <<
158
- ' instead of ' <<
159
- Formatter.color(meth, :cyan) <<
160
- ' to ' <<
161
- GuessMethodOutputter.object(obj)
162
- end
163
-
164
- def self.ambigious_const(sym, possibilities, obj) #:nodoc:
165
- Formatter.color('ambigious constant:', :red) <<
166
- ' ' <<
167
- Formatter.color(sym, :green) <<
168
- ' possible matches ' <<
169
- possibilities.map {|m| Formatter.color(m, :cyan)}.join(', ') <<
170
- ' for ' <<
171
- Formatter.color(obj, :green, :bold)
172
- end
173
-
174
- def self.no_const_in_threshold(sym, obj) #:nodoc:
175
- Formatter.color('no constant in threshold: ', :red) <<
176
- Formatter.color(sym, :green) <<
177
- ' for ' <<
178
- Formatter.color(obj, :green, :bold)
179
- end
180
-
181
- def self.replacing_const(sym, call_const, obj) #:nodoc:
182
- Formatter.color('attention:', :red) <<
183
- ' replacing non-existant constant ' <<
184
- Formatter.color(sym, :cyan) <<
185
- ' with ' <<
186
- Formatter.color(call_const, :cyan) <<
187
- ' for ' <<
188
- Formatter.color(obj, :green, :bold)
189
- end
190
-
191
- end
192
-
193
19
  end
194
20
 
21
+ require 'guessmethod/guesser'
22
+ require 'guessmethod/constant'
23
+ require 'guessmethod/method'
24
+ require 'guessmethod/outputter'
25
+ require 'guessmethod/options'
195
26
  require 'guessmethod/version'
27
+ require 'string/levenshtein'
196
28
 
197
29
  class Object; include GuessMethod; end
198
30
  class Module; extend GuessMethod::GuessConstant; end
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>Guess Method</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/guessmethod"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/guessmethod" class="numbers">0.1.2</a>
36
+ <a href="http://rubyforge.org/projects/guessmethod" class="numbers">0.2.0</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;guessmethod&#8217;</h1>
39
39
 
@@ -41,10 +41,17 @@
41
41
  <h2>What</h2>
42
42
 
43
43
 
44
- <p>GuessMethod is an aggressive spell checker for irb. Don&#8217;t let sloppy typing
44
+ <p>GuessMethod is an aggressive spell checker for irb&#8230; and rake! Don&#8217;t let sloppy typing
45
45
  slow you down. Let GuessMethod take care of you.</p>
46
46
 
47
47
 
48
+ <p>Throw <code>require 'guessmethod'</code> in your .irbrc for the GuessMethod magic.</p>
49
+
50
+
51
+ <p>Try <code>require 'guessmethod/rake'</code> in your rakefiles or use the new <code>grake</code>
52
+ command for GuessRakeTask magic. But <span class="caps">BE CAREFUL</span>!</p>
53
+
54
+
48
55
  <h3>How</h3>
49
56
 
50
57
 
@@ -57,6 +64,9 @@ constant. You can see that GuessMethod has already outgrown its name.</p>
57
64
  const_missing handle the problem.</p>
58
65
 
59
66
 
67
+ <p>GuessRakeTask works along similar lines.</p>
68
+
69
+
60
70
  <h2>Installing</h2>
61
71
 
62
72
 
@@ -81,6 +91,15 @@ attention: sending to_f instead of tof to "3":String
81
91
  [1.0, 2.0, 3.0]
82
92
  005:0&gt; eixt
83
93
  attention: sending exit instead of eixt to main:Object
94
+ </pre>
95
+
96
+ <p>Or, see the magic of grake:</p>
97
+
98
+
99
+ <pre>mvb:~/hot-rails-app cms$ grake db:migrat
100
+ (in /Users/cms/hot-rails-app)
101
+ attention: invoking task db:migrate instead of db:migrat
102
+ ...
84
103
  </pre>
85
104
 
86
105
  <p>There are a number of options available which affect how GuessMethod works.</p>
@@ -128,7 +147,7 @@ attention: sending exit instead of eixt to main:Object
128
147
 
129
148
  <p>Comments are welcome. Send an email to chris @@ tie-rack .. org.</p>
130
149
  <p class="coda">
131
- website generated via <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>'s <a href="http://newgem.rubyforge.org/">newgem</a>, on 8th November 2007<br>
150
+ website generated via <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>'s <a href="http://newgem.rubyforge.org/">newgem</a>, on 6th December 2007<br>
132
151
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
133
152
  </p>
134
153
  </div>
data/website/index.txt CHANGED
@@ -5,9 +5,14 @@ h1. &#x2192; 'guessmethod'
5
5
 
6
6
  h2. What
7
7
 
8
- GuessMethod is an aggressive spell checker for irb. Don't let sloppy typing
8
+ GuessMethod is an aggressive spell checker for irb... and rake! Don't let sloppy typing
9
9
  slow you down. Let GuessMethod take care of you.
10
10
 
11
+ Throw <code>require 'guessmethod'</code> in your .irbrc for the GuessMethod magic.
12
+
13
+ Try <code>require 'guessmethod/rake'</code> in your rakefiles or use the new <code>grake</code>
14
+ command for GuessRakeTask magic. But BE CAREFUL!
15
+
11
16
  h3. How
12
17
 
13
18
  GuessMethod aliases out method_missing and const_missing and replaces it with
@@ -17,6 +22,8 @@ constant. You can see that GuessMethod has already outgrown its name.
17
22
  When GuessMethod can't figure anything out, it lets the original method_missing or
18
23
  const_missing handle the problem.
19
24
 
25
+ GuessRakeTask works along similar lines.
26
+
20
27
  h2. Installing
21
28
 
22
29
  <pre syntax="ruby">sudo gem install guessmethod</pre>
@@ -41,6 +48,14 @@ attention: sending to_f instead of tof to "3":String
41
48
  attention: sending exit instead of eixt to main:Object
42
49
  </pre>
43
50
 
51
+ Or, see the magic of grake:
52
+
53
+ <pre>mvb:~/hot-rails-app cms$ grake db:migrat
54
+ (in /Users/cms/hot-rails-app)
55
+ attention: invoking task db:migrate instead of db:migrat
56
+ ...
57
+ </pre>
58
+
44
59
  There are a number of options available which affect how GuessMethod works.
45
60
 
46
61
  * <code>GuessMethodOptions[:insert_weight]</code>, <code>GuessMethodOptions[:delete_weight]</code>, <code>GuessMethodOptions[:substitution_weight]</code> change how the levenshtein distance is calculated between method and constant names. The default values are all 1.
metadata CHANGED
@@ -1,33 +1,38 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: guessmethod
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.3
7
- date: 2007-11-16 00:00:00 -07:00
8
- summary: an aggressive spell checker for irb
9
- require_paths:
10
- - lib
11
- email: chris@tie-rack.org
12
- homepage: http://guessmethod.rubyforge.org
13
- rubyforge_project: guessmethod
14
- description: an aggressive spell checker for irb
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
25
- platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
4
+ version: 0.2.0
5
+ platform: ""
29
6
  authors:
30
7
  - Chris Shea
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2007-12-06 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0.7"
23
+ version:
24
+ description: an aggressive spell checker for irb
25
+ email: chris@tie-rack.org
26
+ executables:
27
+ - grake
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - History.txt
32
+ - License.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ - website/index.txt
31
36
  files:
32
37
  - History.txt
33
38
  - License.txt
@@ -36,7 +41,14 @@ files:
36
41
  - Rakefile
37
42
  - lib/guessmethod.rb
38
43
  - lib/guessmethod/version.rb
44
+ - lib/guessmethod/guesser.rb
45
+ - lib/guessmethod/constant.rb
46
+ - lib/guessmethod/outputter.rb
47
+ - lib/guessmethod/method.rb
48
+ - lib/guessmethod/rake.rb
49
+ - lib/guessmethod/options.rb
39
50
  - lib/string/levenshtein.rb
51
+ - bin/grake
40
52
  - scripts/txt2html
41
53
  - setup.rb
42
54
  - spec/guessmethod_spec.rb
@@ -47,30 +59,32 @@ files:
47
59
  - website/javascripts/rounded_corners_lite.inc.js
48
60
  - website/stylesheets/screen.css
49
61
  - website/template.rhtml
50
- test_files: []
51
-
62
+ has_rdoc: true
63
+ homepage: http://guessmethod.rubyforge.org
64
+ post_install_message:
52
65
  rdoc_options:
53
66
  - --main
54
67
  - README.txt
55
- extra_rdoc_files:
56
- - History.txt
57
- - License.txt
58
- - Manifest.txt
59
- - README.txt
60
- - website/index.txt
61
- executables: []
62
-
63
- extensions: []
64
-
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ version:
65
82
  requirements: []
66
83
 
67
- dependencies:
68
- - !ruby/object:Gem::Dependency
69
- name: rake
70
- version_requirement:
71
- version_requirements: !ruby/object:Gem::Version::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: "0.7"
76
- version:
84
+ rubyforge_project: guessmethod
85
+ rubygems_version: 0.9.5
86
+ signing_key:
87
+ specification_version: 2
88
+ summary: an aggressive spell checker for irb
89
+ test_files: []
90
+