Sha256: 9dd5c5b6b7ddfb86f4b93701a94f9b99f585b2bcf8043f3a1de4ebaf306bcff7
Contents?: true
Size: 1.77 KB
Versions: 3
Compression:
Stored size: 1.77 KB
Contents
require 'forwardable' require 'pry' class Section extend Forwardable attr_reader :section def_delegators :@citems, :[], :count, :each, :sort!, :reduce def initialize (sect, citems, collapsed) @section = sect @collapsed = collapsed @citems = section_filter(citems) sort_pages end def find_index(citem) @citems.find_index(citem) end def find_by_short_name(sname) matches = @citems.select { |c| sname == c.short_name} binding.pry if matches.length != 1 raise RuntimeError,"#{sname}: invalid reference in section \"#{@section}\"" if matches.length == 0 raise RunimeError, "#{sname}: duplicate referenced in section \"#{@section}\"" if matches.length != 1 matches[0] end def [](ind) @citems[ind] end def next_for(citem) index = @citems.find_index(citem) raise ArgumentError, "invalid citem in next_for" if index.nil? new_index = [index, @citems.length-2].min @citems[new_index+1] end def previous_for(citem) index = @citems.find_index(citem) raise ArgumentError, "invalid citem in next_for" if index.nil? new_index = [index, 1].max @citems[new_index-1] end def has_subsections? false end def has_lecture_numbers? false end def collapsed? @collapsed end protected def lookup_citem_by_identifier identifier res = @citems.select { |i| i.identifier == identifier } binding.pry if res.length != 1 raise RuntimeError, "lookup by identifier failed #{identifier}" if res.length != 1 res[0] end # Remove citems that don't belong in this section, or are hidden def section_filter citems filtered_citems = citems.map do |citem| citem.section == @section && !citem.hidden? ? citem : nil end filtered_citems.compact end def sort_pages @citems.sort! { |a,b| a.order <=> b.order } rescue binding.pry end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
coursegen-0.0.6 | lib/coursegen/course/data/section.rb |
coursegen-0.0.4 | lib/coursegen/course/lib/section.rb |
coursegen-0.0.3 | lib/coursegen/course/lib/section.rb |