Module: InciScore::Recognizer::Rules::Levenshtein
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 |