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) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/inci_score/recognizer_rules.rb', line 36

def call(src)
  return if src.empty?
  size = src.size
  t = tolerance(size)
  farthest = Result.new(nil, size)
  initial = src[0]
  result = Config::CATALOG.reduce(farthest) do |nearest, (name, score)|
    next nearest unless name.start_with?(initial)
    next nearest if name.size > (size + t)
    d = src.distance(name)
    nearest = Result.new(name, d, score) if d < nearest.distance
    nearest
  end
  Component.new(result.name, result.score) if result.tolerable?(size, t)
end