Module: InciScore::Recognizer::Rules::Levenshtein

Extended by:
Levenshtein
Included in:
Levenshtein
Defined in:
lib/inci_score/recognizer_rules.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Instance Method Details

#call(src, catalog) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/inci_score/recognizer_rules.rb', line 26

def call(src, catalog)
  size = src.size
  farthest = Result.new(nil, size)
  initial = src[0]
  result = catalog.reduce(farthest) do |nearest, (component, _)|
    next nearest unless component.start_with?(initial)
    next nearest if component.size > (size + TOLERANCE)
    d = src.distance(component)
    nearest = Result.new(component, d) if d < nearest.distance
    nearest
  end
  result.name if result.tolerable?(size)
end