fuzzy 0.0.1 → 9000.0.1
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/.gitignore +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +45 -0
- data/fuzzy.gemspec +2 -1
- data/lib/fuzzy/version.rb +1 -1
- data/lib/fuzzy.rb +25 -2
- data/lib/object.rb +0 -0
- data/spec/fuzzy_spec.rb +46 -0
- metadata +19 -6
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fuzzy (0.0.1)
|
5
|
+
fuzzy-string-match
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
RubyInline (3.11.0)
|
11
|
+
ZenTest (~> 4.3)
|
12
|
+
ZenTest (4.6.2)
|
13
|
+
archive-tar-minitar (0.5.2)
|
14
|
+
columnize (0.3.4)
|
15
|
+
diff-lcs (1.1.3)
|
16
|
+
fuzzy-string-match (0.9.1)
|
17
|
+
RubyInline (>= 3.8.6)
|
18
|
+
linecache19 (0.5.12)
|
19
|
+
ruby_core_source (>= 0.1.4)
|
20
|
+
rspec (2.7.0)
|
21
|
+
rspec-core (~> 2.7.0)
|
22
|
+
rspec-expectations (~> 2.7.0)
|
23
|
+
rspec-mocks (~> 2.7.0)
|
24
|
+
rspec-core (2.7.1)
|
25
|
+
rspec-expectations (2.7.0)
|
26
|
+
diff-lcs (~> 1.1.2)
|
27
|
+
rspec-mocks (2.7.0)
|
28
|
+
ruby-debug-base19 (0.11.25)
|
29
|
+
columnize (>= 0.3.1)
|
30
|
+
linecache19 (>= 0.5.11)
|
31
|
+
ruby_core_source (>= 0.1.4)
|
32
|
+
ruby-debug19 (0.11.6)
|
33
|
+
columnize (>= 0.3.1)
|
34
|
+
linecache19 (>= 0.5.11)
|
35
|
+
ruby-debug-base19 (>= 0.11.19)
|
36
|
+
ruby_core_source (0.1.5)
|
37
|
+
archive-tar-minitar (>= 0.5.2)
|
38
|
+
|
39
|
+
PLATFORMS
|
40
|
+
ruby
|
41
|
+
|
42
|
+
DEPENDENCIES
|
43
|
+
fuzzy!
|
44
|
+
rspec
|
45
|
+
ruby-debug19
|
data/fuzzy.gemspec
CHANGED
@@ -5,9 +5,10 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.authors = ["Mark Burns"]
|
6
6
|
gem.email = ["markthedeveloper@gmail.com"]
|
7
7
|
gem.description = %q{Force ruby to use common sense instead of being so pedantic}
|
8
|
-
gem.summary = %q{Fuzzy matching
|
8
|
+
gem.summary = %q{Fuzzy matching for method missing - at last!!!!}
|
9
9
|
gem.homepage = ""
|
10
10
|
|
11
|
+
gem.add_dependency "fuzzy-string-match"
|
11
12
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
13
|
gem.files = `git ls-files`.split("\n")
|
13
14
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/fuzzy/version.rb
CHANGED
data/lib/fuzzy.rb
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
require "fuzzy/version"
|
2
|
+
require 'fuzzystringmatch'
|
2
3
|
|
3
|
-
module
|
4
|
-
|
4
|
+
module FuzzyBear
|
5
|
+
def method_missing sym, *args, &block
|
6
|
+
chosen_method = fuzzy_match sym
|
7
|
+
puts "You requested #{sym}, our survey says: #{chosen_method}"
|
8
|
+
self.send chosen_method, *args, &block
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def fuzzy_match requested_method
|
13
|
+
max = - (1.0/0)
|
14
|
+
matcher = FuzzyStringMatch::JaroWinkler.new.create :pure
|
15
|
+
|
16
|
+
chosen_method = nil
|
17
|
+
methods.each do |m|
|
18
|
+
distance = matcher.getDistance m.to_s, requested_method.to_s
|
19
|
+
if distance > max
|
20
|
+
max = distance
|
21
|
+
chosen_method = m.to_sym unless m.to_sym == :method_missing
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
chosen_method
|
26
|
+
end
|
27
|
+
# Your code goes here...
|
5
28
|
end
|
data/lib/object.rb
ADDED
File without changes
|
data/spec/fuzzy_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
debugger
|
2
|
+
require './lib/fuzzy'
|
3
|
+
|
4
|
+
|
5
|
+
describe "Fuzzy" do
|
6
|
+
class BlankishSlate
|
7
|
+
instance_methods.each do |meth|
|
8
|
+
undef_method(meth) unless(meth.to_s =~ /\A__/ or %w(method_missing eval debugger send methods fuzzy_match).include? meth.to_s)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#fuzzy_match" do
|
13
|
+
it "matches the nearest method name" do
|
14
|
+
class Egg < BlankishSlate #so we don't match things not in the tests
|
15
|
+
include FuzzyBear
|
16
|
+
def cheese
|
17
|
+
end
|
18
|
+
|
19
|
+
def shoe
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Egg.new.fuzzy_match(:chase).should == :cheese
|
24
|
+
Egg.new.fuzzy_match(:shoes).should == :shoe
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#method_missing" do
|
29
|
+
it "calls the method you meant to call" do
|
30
|
+
class Horse < BlankishSlate
|
31
|
+
include FuzzyBear
|
32
|
+
|
33
|
+
def dog
|
34
|
+
"cat"
|
35
|
+
end
|
36
|
+
|
37
|
+
def spider
|
38
|
+
"fly"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Horse.new.god.should == "cat"
|
43
|
+
Horse.new.spyder.should == "fly"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: fuzzy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version:
|
5
|
+
version: 9000.0.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mark Burns
|
@@ -11,8 +11,18 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
|
13
13
|
date: 2011-11-23 00:00:00 Z
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: fuzzy-string-match
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
16
26
|
description: Force ruby to use common sense instead of being so pedantic
|
17
27
|
email:
|
18
28
|
- markthedeveloper@gmail.com
|
@@ -25,11 +35,14 @@ extra_rdoc_files: []
|
|
25
35
|
files:
|
26
36
|
- .gitignore
|
27
37
|
- Gemfile
|
38
|
+
- Gemfile.lock
|
28
39
|
- README.md
|
29
40
|
- Rakefile
|
30
41
|
- fuzzy.gemspec
|
31
42
|
- lib/fuzzy.rb
|
32
43
|
- lib/fuzzy/version.rb
|
44
|
+
- lib/object.rb
|
45
|
+
- spec/fuzzy_spec.rb
|
33
46
|
homepage: ""
|
34
47
|
licenses: []
|
35
48
|
|
@@ -56,6 +69,6 @@ rubyforge_project:
|
|
56
69
|
rubygems_version: 1.8.11
|
57
70
|
signing_key:
|
58
71
|
specification_version: 3
|
59
|
-
summary: Fuzzy matching
|
60
|
-
test_files:
|
61
|
-
|
72
|
+
summary: Fuzzy matching for method missing - at last!!!!
|
73
|
+
test_files:
|
74
|
+
- spec/fuzzy_spec.rb
|