class CItem

Coursegen Item decorates Nanoc Item

Attributes

assigned[R]
cat[R]
css_class[R]
desc[R]
due[R]
end_time[RW]
homework[R]
hwref[R]
identifier[R]
lectref[R]
lecture_date[RW]
lecture_number[RW]
nitem[R]
order[R]
reading[R]
section[R]
short_name[R]
slides[R]
start_time[RW]
status[R]
subsection[R]
subsection_citem[R]
title[R]
type[R]

Public Class Methods

new(nitem=nil, ident=nil, type=nil, order=nil) click to toggle source

Callable with nitem=nil to create a mock

# File lib/coursegen/course/data/citem.rb, line 14
def initialize(nitem=nil, ident=nil, type=nil, order=nil)
  if !nitem.nil?
    # path to create a real citem
    fail ArgumentError, "invalid CItem contruction" unless ident.nil?
    @nitem = nitem
    defaults_from_nitem
    parse_identifier @nitem.identifier
  else
    # path to create a mock citem
    fail ArgumentError, "invalid CItem contruction" unless nitem.nil?
    @nitem = nil
    @status = nil
    @type = type
    @identifier = ident
    @order = order
    @title = ident
    @style = nil
    parse_identifier(ident)
  end
end

Public Instance Methods

collapsed?() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 47
def collapsed?
  @collapsed = @nitem[:collapsed].nil? ? true : @nitem[:collapsed]
end
hidden?() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 35
def hidden?
  if @nitem.nil?
    false
  else
    @nitem[:status] == 'hidden' || %w(css min.css js pdf png).include?(@nitem[:extension])
  end
end
lecture?() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 43
def lecture?
  !@lecture_date.nil?
end
lecture_date_s() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 51
def lecture_date_s
  @lecture_date.strftime('%a %b %-d') unless @lecture_date.nil?
end
lecture_number_s() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 71
def lecture_number_s
  "#{@section.singularize} #{@lecture_number}"
end
schedule_end_date_time() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 63
def schedule_end_date_time
  return if @lecture_date.nil?

  # schedule = Toc.instance.section(@section).schedule
  # lecture_date + schedule.end_time
  lecture_date + @end_time
end
schedule_start_date_time() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 55
def schedule_start_date_time
  return if @lecture_date.nil?

  # schedule = Toc.instance.section(@section).schedule
  # lecture_date + schedule.start_time
  lecture_date + @start_time
end

Private Instance Methods

defaults_from_nitem() click to toggle source
# File lib/coursegen/course/data/citem.rb, line 77
def defaults_from_nitem
  @type = @nitem[:type] || 'page'
  fail ArgumentError, 'Invalid page type' unless ["page", "subsection"].include? @type

  @subsection = nil
  @status = @nitem[:status]
  @order = @nitem[:order].to_i unless @nitem[:order].nil?
  @identifier = @nitem.identifier
  @section = @nitem[:section]
  @title = @nitem[:title]
  @css_class = @nitem[:css_class]
  @homework = @nitem[:homework]
  @desc = @nitem[:desc]
  @cat = @nitem[:cat]
  @hwref = @nitem[:hwref]
  @assigned = @nitem[:assigned]
  @slides = @nitem[:slides]
  @lectref = @nitem[:lectref]
  @reading = @nitem[:reading]
  @due = @nitem[:due]

end
parse_identifier(ident) click to toggle source
# File lib/coursegen/course/data/citem.rb, line 100
def parse_identifier(ident)
  parts = ident.to_s.split("/")
  @section ||= parts[2]
  # parsed_title = parts[-1].match(/^((\d*)_)?([^\/]*)$/)
  parsed_title = parts[-1].match(/^((\d*)_)?(\w*)/)
  fail "Invalid item title" if parsed_title.nil?

  @order ||= parsed_title[2].to_i
  @short_name = parsed_title[3]
  @title ||= short_name
  if @type == "subsection"
    @subsection = "/#{parts[1..-2].join('/')}/"
    # @subsection = "/#{parts[1..-1].join('/')}/"
  elsif @type == "page"
    @subsection = "/#{parts[1..-2].join('/')}/"
  end
end