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
984 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 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)
  22. Task.new @fs, self, semester, assignment
  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