class Fuzzily::String

Public Instance Methods

scored_trigrams() click to toggle source
# File lib/fuzzily/trigram.rb, line 13
def scored_trigrams
  trigrams.map { |t| [t, self.length] }
end
trigrams() click to toggle source
# File lib/fuzzily/trigram.rb, line 6
def trigrams
  return [] if __getobj__.nil?
  normalized = self.normalize
  number_of_trigrams = normalized.length - 3
  trigrams = (0..number_of_trigrams).map { |index| normalized[index,3] }.uniq
end

Protected Instance Methods

normalize() click to toggle source

Remove accents, downcase, replace spaces and word start with ‘*’, return list of normalized words

# File lib/fuzzily/trigram.rb, line 21
def normalize
  ActiveSupport::Multibyte::Chars.new(self).
    mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/,'').downcase.to_s.
    gsub(/[^a-z]/,' ').
    gsub(/\s+/,'*').
    gsub(/^/,'**').
    gsub(/$/,'*')
end