A code autograder for student homework submissions
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

43 lignes
1015 B

  1. module KGrader
  2. class Course
  3. attr_reader :name, :backend
  4. def initialize(filesystem, name)
  5. @fs = filesystem
  6. @name = name
  7. @config = @fs.load @fs.course_config(@name)
  8. type = @config['backend']
  9. @backend = KGrader::backend(type).new @fs, self, @config[type]
  10. @rosters = {}
  11. @assignments = {}
  12. rescue FilesystemError
  13. raise CourseError, "unknown or invalid course: #{name}"
  14. end
  15. def roster(semester)
  16. @rosters[semester] ||= Roster.new @fs, self, semester
  17. end
  18. def assignment(name)
  19. @assignments[name] ||= Assignment.new @fs, self, name
  20. end
  21. def task(semester, assignment, students = nil)
  22. Task.new @fs, self, semester, assignment, students
  23. end
  24. def rosters
  25. @fs.semesters(@name).map! { |semester| roster semester }
  26. end
  27. def assignments
  28. @fs.assignments(@name).map! { |name| assignment name }
  29. end
  30. def current_semester
  31. KGrader::current_semester @config['semesters']
  32. end
  33. end
  34. end