Current Path: > > opt > alt > > ruby32 > share > ruby > did_you_mean
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
core_ext | Directory | - | - | |
formatters | Directory | - | - | |
spell_checkers | Directory | - | - | |
experimental.rb | File | 139 bytes | April 24 2025 07:53:45. | |
formatter.rb | File | 1304 bytes | April 24 2025 07:53:45. | |
jaro_winkler.rb | File | 1833 bytes | April 24 2025 07:53:45. | |
levenshtein.rb | File | 1375 bytes | April 24 2025 07:53:45. | |
spell_checker.rb | File | 1297 bytes | April 24 2025 07:53:45. | |
tree_spell_checker.rb | File | 2873 bytes | April 24 2025 07:53:45. | |
verbose.rb | File | 137 bytes | April 24 2025 07:53:45. | |
version.rb | File | 49 bytes | April 24 2025 07:53:45. |
# frozen-string-literal: true require_relative "levenshtein" require_relative "jaro_winkler" module DidYouMean class SpellChecker def initialize(dictionary:) @dictionary = dictionary end def correct(input) normalized_input = normalize(input) threshold = normalized_input.length > 3 ? 0.834 : 0.77 words = @dictionary.select { |word| JaroWinkler.distance(normalize(word), normalized_input) >= threshold } words.reject! { |word| input.to_s == word.to_s } words.sort_by! { |word| JaroWinkler.distance(word.to_s, normalized_input) } words.reverse! # Correct mistypes threshold = (normalized_input.length * 0.25).ceil corrections = words.select { |c| Levenshtein.distance(normalize(c), normalized_input) <= threshold } # Correct misspells if corrections.empty? corrections = words.select do |word| word = normalize(word) length = normalized_input.length < word.length ? normalized_input.length : word.length Levenshtein.distance(word, normalized_input) < length end.first(1) end corrections end private def normalize(str_or_symbol) #:nodoc: str = str_or_symbol.to_s.downcase str.tr!("@", "") str end end end
SILENT KILLER Tool