A code autograder for student homework submissions
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
878 B

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