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.

32 lignes
736 B

  1. module KGrader
  2. class Roster
  3. attr_reader :semester
  4. def initialize(filesystem, course, semester)
  5. @fs = filesystem
  6. @course = course
  7. @semester = semester
  8. @students = nil
  9. end
  10. def load(filename)
  11. @students = @fs.load(filename).map! { |item| item.first }
  12. FileUtils.mkdir_p File.dirname(rosterfile)
  13. File.write rosterfile, @students.join("\n")
  14. rescue FilesystemError => err
  15. raise RosterError, err
  16. end
  17. def students
  18. @students ||= @fs.load(rosterfile).map! { |item| item.first }
  19. rescue FilesystemError
  20. raise RosterError, "unknown semester: #{semester}"
  21. end
  22. private
  23. def rosterfile
  24. @fs.roster @course.name, @semester
  25. end
  26. end
  27. end