module InciScore::Recognizer::Rules::Levenshtein

Constants

Result

Public Instance Methods

call(src, catalog) click to toggle source
# File lib/inci_score/recognizer_rules.rb, line 26
def call(src, catalog)
  return if src.empty?
  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