Module: TypoSafe
- Defined in:
- lib/typo_safe.rb,
lib/typo_safe/version.rb
Constant Summary
collapse
- VERSION =
"0.0.2"
- @@maximum_levenshtein_distance_for_match =
4
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(requested_method, *args, &block) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/typo_safe.rb', line 7
def method_missing(requested_method, *args, &block)
distances = []
methods.select{ |m|
a = method(m).arity
(a >= 0 && a == args.size) || (a < 0 && (0 - a - 1) <= args.size)
}.each { |meth|
distance = Text::Levenshtein.distance(requested_method.to_s, meth.to_s)
distances << {meth: meth, dist: Text::Levenshtein.distance(requested_method.to_s, meth.to_s)} if distance <= @@maximum_levenshtein_distance_for_match
}
if distances.size == 0
super
else
closest_match = distances.sort_by{|dist| dist[:dist]}.first
if block_given?
send(closest_match[:meth], *args, &block)
else
send(closest_match[:meth], *args)
end
end
end
|
Class Method Details
.maximum_levenshtein_distance_for_match=(val) ⇒ Object
29
30
31
|
# File 'lib/typo_safe.rb', line 29
def self.maximum_levenshtein_distance_for_match=(val)
@@maximum_levenshtein_distance_for_match = val
end
|