Class: PCR::Course
- Inherits:
-
Object
- Object
- PCR::Course
- Includes:
- Comparable, Resource
- Defined in:
- lib/classes/course.rb
Instance Attribute Summary collapse
-
#aliases ⇒ Object
readonly
Returns the value of attribute aliases.
-
#credits ⇒ Object
readonly
Returns the value of attribute credits.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#history ⇒ Object
readonly
Returns the value of attribute history.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#retrieved ⇒ Object
readonly
Returns the value of attribute retrieved.
-
#reviews ⇒ Object
readonly
Returns the value of attribute reviews.
-
#sections ⇒ Object
readonly
Returns the value of attribute sections.
-
#semester ⇒ Object
readonly
Returns the value of attribute semester.
-
#valid ⇒ Object
readonly
Returns the value of attribute valid.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #average(metric) ⇒ Object
-
#initialize(path, semester) ⇒ Course
constructor
A new instance of Course.
- #season ⇒ Object
- #year ⇒ Object
Methods included from Resource
Constructor Details
#initialize(path, semester) ⇒ Course
Returns a new instance of Course.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/classes/course.rb', line 12 def initialize(path, semester) #TODO: Don't need to pass in semester @path, @semester = path, semester # Hit api json = PCR.get_json(path) # List of sections @sections = json['result']['sections']['values'].map do |section| Section.new(section['path']) end # Assign attrs attrs = %w(aliases credits description history id name reviews retrieved valid version) set_attrs(attrs, json) end |
Instance Attribute Details
#aliases ⇒ Object (readonly)
Returns the value of attribute aliases.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def aliases @aliases end |
#credits ⇒ Object (readonly)
Returns the value of attribute credits.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def credits @credits end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def description @description end |
#history ⇒ Object (readonly)
Returns the value of attribute history.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def history @history end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def id @id end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def name @name end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def path @path end |
#retrieved ⇒ Object (readonly)
Returns the value of attribute retrieved.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def retrieved @retrieved end |
#reviews ⇒ Object (readonly)
Returns the value of attribute reviews.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def reviews @reviews end |
#sections ⇒ Object (readonly)
Returns the value of attribute sections.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def sections @sections end |
#semester ⇒ Object (readonly)
Returns the value of attribute semester.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def semester @semester end |
#valid ⇒ Object (readonly)
Returns the value of attribute valid.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def valid @valid end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
8 9 10 |
# File 'lib/classes/course.rb', line 8 def version @version end |
Instance Method Details
#<=>(other) ⇒ Object
30 31 32 33 34 |
# File 'lib/classes/course.rb', line 30 def <=>(other) #TODO: Throw error if not same course return year <=> other.year unless year == other.year season <=> other.season end |
#average(metric) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/classes/course.rb', line 36 def average(metric) # Aggregate ratings across all sections total, num = 0, 0 #TODO: inject self.sections.each do |section| section.reviews.each do |review| total += review.send(metric).to_f num += 1 end end # Return average value across all sections (total / num) end |
#season ⇒ Object
55 56 57 |
# File 'lib/classes/course.rb', line 55 def season @semester[4] end |
#year ⇒ Object
51 52 53 |
# File 'lib/classes/course.rb', line 51 def year @semester[0..3].to_i end |