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.

42 lines
824 B

  1. require_relative 'roster'
  2. require_relative 'task'
  3. module KGrader
  4. class Course
  5. attr_reader :name
  6. def initialize(filesystem, name)
  7. @fs = filesystem
  8. @name = name
  9. @config = @fs.load @fs.course_config(@name)
  10. end
  11. def roster(semester)
  12. # TODO: cache
  13. Roster.new @fs, self, semester
  14. end
  15. def task(semester, assignment)
  16. # TODO: cache
  17. Task.new @fs, self, semester, assignment
  18. end
  19. def rosters
  20. @fs.semesters(@name).map! { |semester| roster semester }
  21. end
  22. def assignments
  23. @fs.assignments @name
  24. end
  25. def current_semester
  26. case @config['semesters']
  27. when 'faspYY'
  28. KGrader::season + DateTime.now.strftime('%y')
  29. when 'faspYYYY'
  30. KGrader::season + DateTime.now.strftime('%Y')
  31. end
  32. end
  33. end
  34. end