module Mumukit::Assistant::Rule

Public Class Methods

parse(hash) click to toggle source
# File lib/mumukit/assistant/rule.rb, line 2
def self.parse(hash)
  message = Mumukit::Assistant::Message.parse hash.indifferent_get(:then)
  w = hash.indifferent_get(:when)
  if w.is_a? Hash
    parse_complex_when w.first, message
  else
    parse_simple_when w, message
  end
end
parse_complex_when(w, message) click to toggle source
# File lib/mumukit/assistant/rule.rb, line 22
def self.parse_complex_when(w, message)
  condition, value = *w
  case condition.to_sym
    when :error_contains                             then Mumukit::Assistant::Rule::ErrorContains.new(message, value)
    when :these_tests_failed                         then Mumukit::Assistant::Rule::TheseTestsFailed.new(message, value)
    when :only_these_tests_failed                    then Mumukit::Assistant::Rule::OnlyTheseTestsFailed.new(message, value)
    when :these_expectations_failed                  then Mumukit::Assistant::Rule::TheseExpectationsFailed.new(message, value)
    when :only_these_expectations_failed             then Mumukit::Assistant::Rule::OnlyTheseExpectationsFailed.new(message, value)
    when :submission_passed_with_these_warnings      then Mumukit::Assistant::Rule::TheseExpectationsFailed.new(message, value, strict: true)
    when :submission_passed_with_only_these_warnings then Mumukit::Assistant::Rule::OnlyTheseExpectationsFailed.new(message, value, strict: true)
    else raise "Unsupported rule #{condition}"
  end
end
parse_simple_when(w, message) click to toggle source
# File lib/mumukit/assistant/rule.rb, line 12
def self.parse_simple_when(w, message)
  case w.to_sym
    when :content_empty                    then Mumukit::Assistant::Rule::ContentEmpty.new(message)
    when :submission_errored               then Mumukit::Assistant::Rule::SubmissionErrored.new(message)
    when :submission_failed                then Mumukit::Assistant::Rule::SubmissionFailed.new(message)
    when :submission_passed_with_warnings  then Mumukit::Assistant::Rule::SubmissionPassedWithWarnings.new(message)
    else raise "Unsupported rule #{w}"
  end
end