module Spellchecker

Constants

Mistake
VERSION

Public Instance Methods

apply_fixes(text, mistakes) click to toggle source

@param text [String] @param mistakes [Array<Spellchecker::Mistake>] @return [String]

# File lib/spellchecker.rb, line 60
def apply_fixes(text, mistakes)
  mistakes_hash = mistakes.map { |m| [m.text, m.correction] }.to_h
  regexp = Regexp.union(mistakes_hash.keys)

  text.gsub(regexp, mistakes_hash)
end
check(text) click to toggle source

@param text [String] @return [Array<Spellchecker::Mistake>]

# File lib/spellchecker.rb, line 34
def check(text)
  tokens = Tokenizer.call(text)

  mistakes =
    tokens.each_with_object([]) do |token, acc|
      DetectDuplicate.call(token)&.then { |m| acc << m }
      DetectTypo.call(token)&.then { |m| acc << m }
      DetectNgram.call(token)&.then { |m| acc << m }
    end

  mistakes.each { |mistake| mistake.context = Utils.fetch_context(text, mistake.position) }

  mistakes
end
correct(text) click to toggle source

@param text [String] @return [String]

# File lib/spellchecker.rb, line 51
def correct(text)
  mistakes = check(text)

  apply_fixes(text, mistakes)
end