fuzzyhash 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/fuzzy_hash.rb +10 -6
- metadata +1 -1
data/VERSION.yml
CHANGED
data/lib/fuzzy_hash.rb
CHANGED
@@ -14,6 +14,7 @@ class FuzzyHash
|
|
14
14
|
@fuzzies = []
|
15
15
|
@hash_reverse = {}
|
16
16
|
@fuzzies_reverse = {}
|
17
|
+
@fuzzy_hash = {}
|
17
18
|
@hash = {}
|
18
19
|
@classes_to_fuzz = classes_to_fuzz || [Regexp]
|
19
20
|
@classes_to_fuzz = Set.new(@classes_to_fuzz)
|
@@ -44,7 +45,7 @@ class FuzzyHash
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def keys
|
47
|
-
hash.keys +
|
48
|
+
hash.keys + fuzzy_hash.keys
|
48
49
|
end
|
49
50
|
|
50
51
|
def values
|
@@ -63,8 +64,10 @@ class FuzzyHash
|
|
63
64
|
def []=(key, value)
|
64
65
|
if classes_to_fuzz.nil? || classes_to_fuzz.include?(key.class)
|
65
66
|
fuzzies.delete_if{|f| f.first.hash == key.hash}
|
66
|
-
fuzzies_reverse.delete_if{|k, v| v.hash == key.hash}
|
67
|
+
fuzzies_reverse.delete_if{|k, v| v[1].hash == key.hash}
|
68
|
+
hash_reverse.delete_if{|k,v| v.hash == key.hash}
|
67
69
|
|
70
|
+
fuzzy_hash[key] = value
|
68
71
|
fuzzies << [key, value]
|
69
72
|
reset_fuzz_test!
|
70
73
|
fuzzies_reverse[value] = [fuzzies.size - 1, key, value]
|
@@ -91,7 +94,9 @@ class FuzzyHash
|
|
91
94
|
end
|
92
95
|
|
93
96
|
def [](key)
|
94
|
-
hash.key?(key)
|
97
|
+
(hash.key?(key) && hash[key]) ||
|
98
|
+
((lookup = fuzzy_lookup(key)) && lookup && lookup.first) ||
|
99
|
+
fuzzy_hash[key]
|
95
100
|
end
|
96
101
|
|
97
102
|
def match_with_result(key)
|
@@ -103,7 +108,7 @@ class FuzzyHash
|
|
103
108
|
end
|
104
109
|
|
105
110
|
private
|
106
|
-
attr_reader :fuzzies, :hash_reverse, :fuzzies_reverse, :hash
|
111
|
+
attr_reader :fuzzies, :hash_reverse, :fuzzies_reverse, :hash, :fuzzy_hash
|
107
112
|
attr_writer :fuzz_test
|
108
113
|
|
109
114
|
def reset_fuzz_test!
|
@@ -119,10 +124,9 @@ class FuzzyHash
|
|
119
124
|
case str
|
120
125
|
"
|
121
126
|
fuzzies.each_with_index do |reg, index|
|
122
|
-
method << "when #{reg.first.inspect}: [@fuzzies[#{index}][1],
|
127
|
+
method << "when #{reg.first.inspect}: [@fuzzies[#{index}][1], Regexp.last_match(0)]\n"
|
123
128
|
end
|
124
129
|
method << "end\nend\n"
|
125
|
-
|
126
130
|
@fuzz_test.instance_eval method
|
127
131
|
end
|
128
132
|
@fuzz_test
|