Class: PCR::CourseHistory
- Inherits:
-
Object
- Object
- PCR::CourseHistory
- Includes:
- Resource
- Defined in:
- lib/classes/coursehistory.rb
Instance Attribute Summary collapse
-
#course_code ⇒ Object
readonly
Returns the value of attribute course_code.
-
#courses ⇒ Object
readonly
Returns the value of attribute courses.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#retrieved ⇒ Object
readonly
Returns the value of attribute retrieved.
-
#valid ⇒ Object
readonly
Returns the value of attribute valid.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #average(metric) ⇒ Object
-
#initialize(course_code) ⇒ CourseHistory
constructor
A new instance of CourseHistory.
- #name ⇒ Object
- #recent(metric) ⇒ Object
Methods included from Resource
Constructor Details
#initialize(course_code) ⇒ CourseHistory
Returns a new instance of CourseHistory.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/classes/coursehistory.rb', line 9 def initialize(course_code) @course_code = course_code # Read JSON from PCR API json = PCR.get_json("coursehistories/#{self.course_code}") # List of courses in coursehistory @courses = json['result']['courses'].map do |course| Course.new(course['path'], course['semester']) end # Sort course list by semester @courses.sort! # Assign rest of attrs attrs = %w(id path reviews retrieved valid version) set_attrs(attrs, json) end |
Instance Attribute Details
#course_code ⇒ Object (readonly)
Returns the value of attribute course_code.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def course_code @course_code end |
#courses ⇒ Object (readonly)
Returns the value of attribute courses.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def courses @courses end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def id @id end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def path @path end |
#retrieved ⇒ Object (readonly)
Returns the value of attribute retrieved.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def retrieved @retrieved end |
#valid ⇒ Object (readonly)
Returns the value of attribute valid.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def valid @valid end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
7 8 9 |
# File 'lib/classes/coursehistory.rb', line 7 def version @version end |
Instance Method Details
#average(metric) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/classes/coursehistory.rb', line 45 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 |
#name ⇒ Object
61 62 63 |
# File 'lib/classes/coursehistory.rb', line 61 def name self.courses.last.name end |
#recent(metric) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/classes/coursehistory.rb', line 28 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 |