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.

40 lignes
966 B

  1. module KGrader
  2. class Assignment
  3. attr_reader :name, :manifest
  4. def initialize(filesystem, course, name)
  5. @fs = filesystem
  6. @course = course
  7. @name = name
  8. @root = @fs.assignment @course.name, @name
  9. @config = @fs.load @fs.assignment_config(@course.name, @name)
  10. @manifest = build_manifest
  11. rescue FilesystemError
  12. raise AssignmentError, "unknown assignment: #{name}"
  13. end
  14. def id
  15. @config['id'] || @name
  16. end
  17. def build_manifest
  18. unless @config.include? 'manifest'
  19. raise AssignmentError, "missing manifest: #{@name}"
  20. end
  21. manifest = @config['manifest']
  22. provided = manifest['provided'].map do |fn|
  23. { :name => fn, :path => File.join(@root, 'provided', fn) }
  24. end
  25. graded = manifest['graded'].map { |fn| { :name => fn } }
  26. {
  27. :provided => provided,
  28. :graded => graded,
  29. :report => manifest['report']
  30. }
  31. end
  32. end
  33. end