diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2025-11-18 14:43:44 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2025-11-18 10:38:29 +0000 |
| commit | e3c483b51d036664cd1d0da0896114ce38550fc4 (patch) | |
| tree | 1f165130c29d1b44e61a94d69e428769a90c4209 | |
| parent | 2c169e15884d163e0a3b939f9d6a30b55c3e3b4f (diff) | |
[ruby/rubygems] Removed unused SimilarityDetector
https://github.com/ruby/rubygems/commit/40ace48651
| -rw-r--r-- | lib/bundler/similarity_detector.rb | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/lib/bundler/similarity_detector.rb b/lib/bundler/similarity_detector.rb deleted file mode 100644 index 1f4e61e940..0000000000 --- a/lib/bundler/similarity_detector.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -# This module is not used anywhere in Bundler -# It is included for backwards compatibility in-case someone is relying on it - -module Bundler - class SimilarityDetector - SimilarityScore = Struct.new(:string, :distance) - - # initialize with an array of words to be matched against - def initialize(corpus) - @corpus = corpus - end - - # return an array of words similar to 'word' from the corpus - def similar_words(word, limit = 3) - words_by_similarity = @corpus.map {|w| SimilarityScore.new(w, levenshtein_distance(word, w)) } - words_by_similarity.select {|s| s.distance <= limit }.sort_by(&:distance).map(&:string) - end - - # return the result of 'similar_words', concatenated into a list - # (eg "a, b, or c") - def similar_word_list(word, limit = 3) - words = similar_words(word, limit) - if words.length == 1 - words[0] - elsif words.length > 1 - [words[0..-2].join(", "), words[-1]].join(" or ") - end - end - - protected - - # https://www.informit.com/articles/article.aspx?p=683059&seqNum=36 - def levenshtein_distance(this, that, ins = 2, del = 2, sub = 1) - # ins, del, sub are weighted costs - return nil if this.nil? - return nil if that.nil? - dm = [] # distance matrix - - # Initialize first row values - dm[0] = (0..this.length).collect {|i| i * ins } - fill = [0] * (this.length - 1) - - # Initialize first column values - (1..that.length).each do |i| - dm[i] = [i * del, fill.flatten] - end - - # populate matrix - (1..that.length).each do |i| - (1..this.length).each do |j| - # critical comparison - dm[i][j] = [ - dm[i - 1][j - 1] + (this[j - 1] == that[i - 1] ? 0 : sub), - dm[i][j - 1] + ins, - dm[i - 1][j] + del, - ].min - end - end - - # The last value in matrix is the Levenshtein distance between the strings - dm[that.length][this.length] - end - end -end |
