Sha256: 3aab4f42d5e03eb609599b76bd0742a9159672ac081ed26f357b038c6c4a8baa

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

module Mumukit::Assistant::Rule
  def self.parse(hash)
    message = Mumukit::Assistant::Message.parse hash[:then]
    w = hash[:when]
    if w.is_a? Hash
      parse_complex_when w.first, message
    else
      parse_simple_when w, message
    end
  end

  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

  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)
      else raise "Unsupported rule #{condition}"
    end
  end
end

require_relative 'rule/base.rb'
require_relative 'rule/content_empty.rb'
require_relative 'rule/submission_failed.rb'
require_relative 'rule/these_tests_failed.rb'
require_relative 'rule/only_these_tests_failed.rb'
require_relative 'rule/submission_passed_with_warnings.rb'
require_relative 'rule/these_expectations_failed.rb'
require_relative 'rule/submission_errored.rb'
require_relative 'rule/error_contains.rb'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mumukit-assistant-0.1.1 lib/mumukit/assistant/rule.rb