class LogicAnalyzer

Attributes

conclusion[RW]
proposition[RW]
sentences[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/logic_analyzer.rb, line 10
def initialize(*args)
  self.sentences = []

  unless args.empty?
    args.each do |sentence|
      sentences.append("(#{sentence})")
    end
  end
end

Public Instance Methods

add_conclusion(conclusion) click to toggle source
# File lib/logic_analyzer.rb, line 24
def add_conclusion(conclusion)
  self.conclusion = "(#{conclusion})"
end
add_sentence(sentence) click to toggle source
# File lib/logic_analyzer.rb, line 20
def add_sentence(sentence)
  sentences.append("(#{sentence})")
end
evaluate() click to toggle source
# File lib/logic_analyzer.rb, line 28
def evaluate
  parse

  prop = Proposition.new(proposition)
  prop.parse

  prop.evaluate
end
parse() click to toggle source
# File lib/logic_analyzer.rb, line 37
def parse
  if sentences.empty?
    raise ArgumentError 'Cannot evaluate with no propositions'
  elsif sentences.size == 1
    self.proposition = sentences[0]
  else
    self.proposition = if conclusion.nil?
                         sentences.join(' and ')
                       else
                         "(#{sentences.join(' and ')}) then #{conclusion}"
                       end
  end
end