guessmethod 0.1.3 → 0.2.0

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