Sha256: e6bd2b63e46da0311c27d0ff898f6695d86e3b8cf16fba4c436c7a1703f6d02d
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
class CourseHistory < PCR attr_accessor :course_code, :courses, :id, :path, :retrieved, :valid, :version def initialize(course_code, api_endpt, token) @course_code = course_code @api_endpt = api_endpt @token = token # Read JSON from PCR API api_url = makeURL("coursehistories/#{self.course_code}") json = JSON.parse(open(api_url).read) # List of courses in coursehistory course_list = json['result']['courses'] @courses = [] course_list.each do |course| @courses << Course.new(course['path'], course['semester'], @api_endpt, @token) end # Sort course list by semester @courses.sort! { |a,b| a.compareSemester(b) } # Assign rest of attrs attrs = %w(id path reviews retrieved valid version) attrs.each do |attr| if json['result'][attr] self.instance_variable_set("@#{attr}", json['result'][attr]) else self.instance_variable_set("@#{attr}", json[attr]) end end end def recent(metric) # Select most recent course course = @courses[-1] # Aggregate ratings for metric total, num = 0, 0 course.sections.each do |section| section.reviews.each do |review| total += review.send(metric).to_f num += 1 end end # Return average value across most recent sections (total / num) end def average(metric) # Aggregate ratings across all sections total, num = 0, 0 courses.each do |course| course.sections.each do |section| section.reviews.each do |review| total += review.send(metric).to_f num += 1 end end end # Return average value across all sections (total / num) end def name self.courses.last.name end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pcr-ruby-0.5 | lib/classes/coursehistory.rb |