require_relative 'roster' require_relative 'task' module KGrader class Course attr_reader :name def initialize(filesystem, name) @fs = filesystem @name = name @config = @fs.load @fs.course_config(@name) @rosters = {} end def roster(semester) @rosters[semester] ||= Roster.new @fs, self, semester end def task(semester, assignment) Task.new @fs, self, semester, assignment end def rosters @fs.semesters(@name).map! { |semester| roster semester } end def assignments @fs.assignments @name end def current_semester case @config['semesters'] when 'faspYY' KGrader::season + DateTime.now.strftime('%y') when 'faspYYYY' KGrader::season + DateTime.now.strftime('%Y') end end end end