class StudentProgress::Topic

Attributes

id[RW]
title[RW]
units[R]

Public Class Methods

all() click to toggle source
# File lib/student_progress/topic.rb, line 7
def self.all 
  @@all
end
create_from_hash(hash) click to toggle source
# File lib/student_progress/topic.rb, line 11
def self.create_from_hash(hash)
  new(hash).save
end
find_by_title(title) click to toggle source
# File lib/student_progress/topic.rb, line 15
def self.find_by_title(title)
  all.find{|t| t.title == title}
end
new(attrs = {}) click to toggle source
# File lib/student_progress/topic.rb, line 19
def initialize(attrs = {})
  attrs.each do |attr, value|
    self.send("#{attr}=", value)
  end
  @units = []
end

Public Instance Methods

add_unit(unit) click to toggle source
# File lib/student_progress/topic.rb, line 31
def add_unit(unit)
  @units << unit unless @units.include?(unit)
  unit.topic = self unless unit.topic == self
  unit
end
lessons() click to toggle source
# File lib/student_progress/topic.rb, line 37
def lessons
  @units.map{|u| u.lessons}.flatten
end
lessons_by_unit() click to toggle source
# File lib/student_progress/topic.rb, line 41
def lessons_by_unit
  result = {}
  @units.each do |unit|
    result[unit.title] = unit.lessons.map{|l| "#{l.title} - #{l.content_type} (#{l.id})"}
  end
  result
end
save() click to toggle source
# File lib/student_progress/topic.rb, line 26
def save 
  @@all << self 
  self
end
summary() click to toggle source
# File lib/student_progress/topic.rb, line 49
def summary
  {
    topic: title,
    units: @units.map{|u| u.title},
    lessons: lessons_by_unit,
    readmes: lessons.count{|l| l.content_type == "Readme"},
    labs: lessons.count{|l| l.content_type == "Lab"},
    projects: lessons.count{|l| l.content_type == "Project"}
  }
end