class ChatCorrect::Contraction

Constants

IRREGULAR_CONTRACTION
NOT_CONTRACTION

Attributes

contraction[R]
token_a[R]
token_b[R]

Public Class Methods

new(token_a:, token_b:, contraction:) click to toggle source
# File lib/chat_correct/contraction.rb, line 19
def initialize(token_a:, token_b:, contraction:)
  return false if token_a.nil? || contraction.nil?
  @token_a = token_a.downcase
  token_b ? @token_b = token_b.downcase : @token_b = token_b
  @contraction = contraction.downcase.gsub(/ƪ/, "'")
end

Public Instance Methods

contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 26
def contraction?
  !token_a.nil? && !contraction.nil? &&
  (is_a_not_contraction? ||
  is_an_irregular_contraction? ||
  is_an_us_contraction? ||
  is_an_am_contraction? ||
  is_an_are_contraction? ||
  is_an_is_does_has_contraction? ||
  is_a_have_contraction? ||
  is_a_had_did_would_contraction? ||
  is_a_will_contraction? ||
  is_an_of_contraction? ||
  is_an_it_contraction? ||
  is_a_them_contraction?)
end

Private Instance Methods

is_a_had_did_would_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 79
def is_a_had_did_would_contraction?
  (token_b.eql?('had') || token_b.eql?('did') || token_b.eql?('would')) &&
    contraction.partition("'d")[0].eql?(token_a) &&
    contraction.partition("'d")[2].empty?
end
is_a_have_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 74
def is_a_have_contraction?
  token_b.eql?('have') && contraction.partition("'ve")[0].eql?(token_a) &&
    contraction.partition("'ve")[2].empty?
end
is_a_not_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 44
def is_a_not_contraction?
  token_b.eql?('not') && (NOT_CONTRACTION[token_a].eql?(contraction) ||
    (contraction.partition("n't")[0].eql?(token_a)) &&
    contraction.partition("n't")[2].empty?)
end
is_a_them_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 99
def is_a_them_contraction?
  token_b.eql?('them') && contraction.partition(" 'em")[0].eql?(token_a)
end
is_a_will_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 85
def is_a_will_contraction?
  token_b.eql?('will') && contraction.partition("'ll")[0].eql?(token_a) &&
    contraction.partition("'ll")[2].empty?
end
is_an_am_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 59
def is_an_am_contraction?
  token_b.eql?("am") && contraction.partition("'m")[0].eql?(token_a) &&
  token_a.eql?('i') && contraction.partition("'m")[2].empty?
end
is_an_are_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 64
def is_an_are_contraction?
  token_b.eql?('are') && contraction.partition("'re")[0].eql?(token_a) &&
  contraction.partition("'re")[2].empty?
end
is_an_irregular_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 50
def is_an_irregular_contraction?
  IRREGULAR_CONTRACTION[[token_a, token_b]].eql?(contraction)
end
is_an_is_does_has_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 69
def is_an_is_does_has_contraction?
  (token_b.eql?('is') || token_b.eql?('does') || token_b.eql?('has')) &&
    contraction.partition("'s")[0].eql?(token_a) && contraction.partition("'s")[2].empty?
end
is_an_it_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 95
def is_an_it_contraction?
  token_a.eql?('it') && contraction.partition("'t")[-1].eql?(token_b)
end
is_an_of_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 90
def is_an_of_contraction?
  token_a.eql?('of') && (contraction.eql?("o'") ||
    contraction.partition("o' ")[-1].eql?(token_b))
end
is_an_us_contraction?() click to toggle source
# File lib/chat_correct/contraction.rb, line 54
def is_an_us_contraction?
  token_b.eql?('us') && contraction.partition("'s")[0].eql?(token_a) &&
  token_a.eql?('let') && contraction.partition("'s")[2].empty?
end