did-you-mean 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{did-you-mean}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Leonardo Bessa"]
12
- s.date = %q{2010-04-12}
12
+ s.date = %q{2010-08-28}
13
13
  s.description = %q{Did-you-mean compares the misspelled method name with all other method names and suggests the one with closest textual match.}
14
14
  s.email = %q{leobessa@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.homepage = %q{http://github.com/leobessa/did-you-mean}
33
33
  s.rdoc_options = ["--charset=UTF-8"]
34
34
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.6}
35
+ s.rubygems_version = %q{1.3.7}
36
36
  s.summary = %q{Runtime corrector for misspelled method calls}
37
37
  s.test_files = [
38
38
  "spec/did-you-mean_spec.rb",
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
44
  s.specification_version = 3
45
45
 
46
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
47
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
48
48
  s.add_runtime_dependency(%q<levenshtein>, [">= 0.2.0"])
49
49
  else
@@ -2,36 +2,38 @@ require 'rubygems'
2
2
  require 'levenshtein'
3
3
 
4
4
  module DidYouMean
5
- def self.included(base)
6
- base.class_eval do
7
- def methods_with_a_search
8
- methods_array = methods_with_no_search
9
- class << methods_array
10
- def search(query)
11
- self.sort_by {|name| Levenshtein.normalized_distance(name.to_s, query.to_s) }
12
- end
5
+
6
+ module ClassMethods
7
+ def methods_with_a_search
8
+ methods_array = methods_with_no_search
9
+ class << methods_array
10
+ def search(query)
11
+ self.sort_by {|name| Levenshtein.normalized_distance(name.to_s, query.to_s) }
13
12
  end
14
- methods_array
15
13
  end
14
+ methods_array
15
+ end
16
+ end
17
+
18
+ def self.included(base)
19
+ base.class_eval do
20
+ include DidYouMean::ClassMethods
16
21
  alias_method :methods_with_no_search, :methods
17
22
  alias_method :methods, :methods_with_a_search
18
23
 
19
- unless method_defined? :method_missing
20
- def method_missing(meth, *args, &block); super; end
21
- end
22
24
  alias_method :method_missing_without_method_search, :method_missing
23
25
  alias_method :method_missing, :method_missing_with_method_search
24
-
25
26
  end
27
+ end
26
28
 
27
- end
28
29
  def method_missing_with_method_search(name,*args,&block)
29
- unless (self.respond_to? name)
30
+ unless self.respond_to? name
30
31
  best_match = self.methods.search(name).first
31
- $stdout.print "Did you mean #{self.class}.#{best_match} (yes/no)?\n"
32
- response = $stdin.gets
33
- return self.send(best_match,*args,&block) if /yes/ =~ response
32
+ $stdout.print "Did you mean #{self.class}.#{best_match} (Yes/no)?\n"
33
+ response = $stdin.gets.strip
34
+ return self.send(best_match,*args,&block) if /\A(yes|y|)\z/i =~ response
34
35
  end
35
- method_missing_without_method_search name,*args,&block
36
+ method_missing_without_method_search name,*args,&block
36
37
  end
38
+
37
39
  end
@@ -23,21 +23,24 @@ describe "DidYouMean" do
23
23
  subject do
24
24
  Class.new{include(DidYouMean)}.new
25
25
  end
26
-
27
- it "should suggest methods by textual proximity and call it if develepor types yes" do
28
- def subject.foo; end
29
- $stdout.should_receive(:print).with("Did you mean #{subject.class}.foo (yes/no)?\n")
30
- $stdin.should_receive(:gets).and_return('yes')
31
- subject.should_receive(:foo)
32
- subject.fo
26
+ ["yes","y",""].each do |answer|
27
+ it "should suggest methods by textual proximity and call it if develepor types '#{answer}'" do
28
+ def subject.foo; end
29
+ $stdout.should_receive(:print).with("Did you mean #{subject.class}.foo (Yes/no)?\n")
30
+ $stdin.should_receive(:gets).and_return(answer)
31
+ subject.should_receive(:foo)
32
+ subject.fo
33
+ end
33
34
  end
34
-
35
- it "should suggest methods by textual proximity and dont call it if develepor types no" do
36
- def subject.foo; end
37
- $stdout.should_receive(:print).with("Did you mean #{subject.class}.foo (yes/no)?\n")
38
- $stdin.should_receive(:gets).and_return('no')
39
- subject.should_not_receive(:foo)
40
- lambda {subject.fo}.should raise_error(NoMethodError)
35
+
36
+ ["no","n"].each do |answer|
37
+ it "should suggest methods by textual proximity and dont call it if develepor types '#{answer}'" do
38
+ def subject.foo; end
39
+ $stdout.should_receive(:print).with("Did you mean #{subject.class}.foo (Yes/no)?\n")
40
+ $stdin.should_receive(:gets).and_return(answer)
41
+ subject.should_not_receive(:foo)
42
+ lambda {subject.fo}.should raise_error(NoMethodError)
43
+ end
41
44
  end
42
45
 
43
46
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: did-you-mean
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 25
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 1
8
- - 0
9
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Leonardo Bessa
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-12 00:00:00 -03:00
18
+ date: 2010-08-28 00:00:00 -03:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rspec
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 13
27
30
  segments:
28
31
  - 1
29
32
  - 2
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: levenshtein
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 23
41
46
  segments:
42
47
  - 0
43
48
  - 2
@@ -76,23 +81,27 @@ rdoc_options:
76
81
  require_paths:
77
82
  - lib
78
83
  required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
79
85
  requirements:
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
88
+ hash: 3
82
89
  segments:
83
90
  - 0
84
91
  version: "0"
85
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
86
94
  requirements:
87
95
  - - ">="
88
96
  - !ruby/object:Gem::Version
97
+ hash: 3
89
98
  segments:
90
99
  - 0
91
100
  version: "0"
92
101
  requirements: []
93
102
 
94
103
  rubyforge_project:
95
- rubygems_version: 1.3.6
104
+ rubygems_version: 1.3.7
96
105
  signing_key:
97
106
  specification_version: 3
98
107
  summary: Runtime corrector for misspelled method calls