fuzzyhash 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +7 -28
  2. data/VERSION.yml +1 -1
  3. data/lib/fuzzy_hash.rb +22 -5
  4. metadata +3 -3
data/Rakefile CHANGED
@@ -9,38 +9,17 @@ begin
9
9
  s.files = FileList["[A-Z]*", "{lib,spec}/**/*"]
10
10
  s.rubyforge_project = 'fuzzyhash' # This line would be new
11
11
  end
12
- rescue LoadError
13
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
14
- end
15
-
16
- # These are new tasks
17
- begin
18
- require 'rake/contrib/sshpublisher'
19
- namespace :rubyforge do
20
-
21
- desc "Release gem and RDoc documentation to RubyForge"
22
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
23
-
24
- namespace :release do
25
- desc "Publish RDoc to RubyForge."
26
- task :docs => [:rdoc] do
27
- config = YAML.load(
28
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
29
- )
30
-
31
- host = "#{config['username']}@rubyforge.org"
32
- remote_dir = "/var/www/gforge-projects/fuzzyhash/"
33
- local_dir = 'rdoc'
34
-
35
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
36
- end
37
- end
12
+
13
+ Jeweler::GemcutterTasks.new
14
+ Jeweler::RubyforgeTasks.new do |rubyforge|
15
+ rubyforge.doc_task = "rdoc"
16
+ rubyforge.remote_doc_path = ''
38
17
  end
18
+
39
19
  rescue LoadError
40
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
20
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
41
21
  end
42
22
 
43
-
44
23
  require 'spec'
45
24
  require 'spec/rake/spectask'
46
25
  task :spec => 'spec:all'
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 0
3
- :patch: 6
3
+ :patch: 7
4
4
  :major: 0
data/lib/fuzzy_hash.rb CHANGED
@@ -15,6 +15,12 @@ class FuzzyHash
15
15
  @regexes_reverse.clear
16
16
  end
17
17
 
18
+ def size
19
+ @hash.size + @regexes.size
20
+ end
21
+ alias_method :count, :size
22
+
23
+
18
24
  def ==(o)
19
25
  o.is_a?(FuzzyHash)
20
26
  o.instance_variable_get(:@hash) == @hash &&
@@ -83,14 +89,25 @@ class FuzzyHash
83
89
 
84
90
  private
85
91
  def regex_test
86
- @regex_test ||= Regexp.new(@regexes.collect{|r| "(#{r[0]})"} * '|')
92
+ unless @regex_test
93
+ @regex_test = Object.new
94
+ @regex_test.instance_variable_set(:'@regexes', @regexes)
95
+ method = "
96
+ def match(str)
97
+ case str
98
+ "
99
+ @regexes.each_with_index do |reg, index|
100
+ method << "when #{reg.first.inspect}: [@regexes[#{index}][1], str]\n"
101
+ end
102
+ method << "end\nend\n"
103
+ @regex_test.instance_eval method
104
+ end
105
+ @regex_test
87
106
  end
88
107
 
89
108
  def regex_lookup(key)
90
- if !@regexes.empty? && key.is_a?(String) && (data = regex_test.match(key))
91
- (data_array = data.to_a).each_index do |i|
92
- break [@regexes[i].last, data_array.at(i+1)] if data_array.at(i+1)
93
- end
109
+ if !@regexes.empty? && key.is_a?(String) && (value = regex_test.match(key))
110
+ value
94
111
  end
95
112
  end
96
113
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fuzzyhash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Hull
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-22 00:00:00 -04:00
12
+ date: 2009-09-25 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  requirements: []
54
54
 
55
55
  rubyforge_project: fuzzyhash
56
- rubygems_version: 1.3.4
56
+ rubygems_version: 1.3.5
57
57
  signing_key:
58
58
  specification_version: 3
59
59
  summary: A weird hash with special semantics for regex keys