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.

55 lines
1.4 KiB

  1. module KGrader
  2. class Task
  3. def initialize(filesystem, course, semester, assignment)
  4. @fs = filesystem
  5. @course = course
  6. @semester = semester
  7. @assignment = @course.assignment assignment
  8. @students = @course.roster(@semester).students
  9. end
  10. def grade(options = {})
  11. students = @students
  12. students &= options[:students] unless options[:students].nil?
  13. due = options.fetch(:due, Time.now)
  14. fetch = options.fetch(:fetch, true)
  15. regrade = options.fetch(:regrade, false)
  16. # TODO
  17. puts "[grading]"
  18. puts "course => #{@course.name}"
  19. puts "semester => #{@semester}"
  20. puts "assignment => #{@assignment.name}"
  21. puts "students => #{students.join ', '}"
  22. puts "due => #{due}"
  23. puts "fetch => #{fetch}"
  24. puts "regrade => #{regrade}"
  25. puts
  26. fetch_students students if fetch
  27. end
  28. def commit(options = {})
  29. students = @students
  30. students &= options[:students] unless options[:students].nil?
  31. # TODO
  32. puts "[committing]"
  33. puts "course => #{@course.name}"
  34. puts "semester => #{@semester}"
  35. puts "assignment => #{@assignment.name}"
  36. puts "students => #{students.join ', '}"
  37. end
  38. private
  39. def fetch_students(students)
  40. students.each do |student|
  41. @course.backend.fetch @semester, @assignment.id, student
  42. end
  43. end
  44. end
  45. end