class Lectures
Public Class Methods
new(sect, citems, schedule=nil, collapsed=false)
click to toggle source
Calls superclass method
Section::new
# File lib/coursegen/course/data/lectures.rb, line 4 def initialize(sect, citems, schedule=nil, collapsed=false) super sect, citems, collapsed @schedule = schedule || ::Scheduler.new @citems = sort_items build_tree end
Public Instance Methods
build_tree()
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 23 def build_tree lecture_num = 1 @root = Tree::TreeNode.new("root", "root") @citems.each do |i| i.lecture_number = lecture_num i.lecture_date = @schedule.event_date_by_index(lecture_num - 1) # Lecture numbers are base 1 i.start_time = @schedule.event_start_times[lecture_num - 1] i.end_time = @schedule.event_end_times[lecture_num - 1] if i.type == "subsection" @root.add(Tree::TreeNode.new(i.subsection, i)) elsif i.type == "page" parent_tree_node = parent_node_of(i) parent_tree_node.add(Tree::TreeNode.new(i.identifier, i)) lecture_num += 1 else raise ArgumentError, "invalid lecture page type of #{i.type}for #{i.title}" end end end
has_lecture_numbers?()
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 15 def has_lecture_numbers? true end
has_subsections?()
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 11 def has_subsections? true end
next_for(citem)
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 63 def next_for(citem) next_node = treenode_of(citem).next_sibling if !next_node.nil? next_node.content else citem end end
parent_node_of(citem)
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 43 def parent_node_of citem parent_node = @root[citem.subsection] raise RuntimeError, "Cant find section for item: #{citem.identifier}" if parent_node.nil? parent_node end
previous_for(citem)
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 72 def previous_for(citem) prev_node = treenode_of(citem).previous_sibling if !prev_node.nil? prev_node.content else citem end end
schedule()
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 19 def schedule @schedule end
subsections()
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 59 def subsections @root.children end
treenode_of(citem)
click to toggle source
# File lib/coursegen/course/data/lectures.rb, line 49 def treenode_of citem @root.find do |tree_node| if citem.type == "subsection" citem.subsection == tree_node.name else citem.identifier == tree_node.name end end end
Protected Instance Methods
get_time(times, lect_num)
click to toggle source
@TODO: once there are skips, this calcluation doesn't work anymore!
# File lib/coursegen/course/data/lectures.rb, line 84 def get_time(times, lect_num) if times.nil? "0" else times[(lect_num % 3) - 1] end end
sort_items()
click to toggle source
Sort all the items in this section: First by the ordering of the subseciton that the item belongs to, and second by the item's own indicated order.
# File lib/coursegen/course/data/lectures.rb, line 96 def sort_items new_citems = @citems.sort_by do |i| [lookup_citem_by_identifier(i.subsection + "index.html").order, ((i.type == "page" ? 100 : 1) * i.order)] end @items = new_citems end