class DocTemplate::Objects::TOCMetadata

Public Class Methods

dump(data) click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 55
def dump(data)
  data.as_json
end
load(data) click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 59
def load(data)
  new(data)
end

Public Instance Methods

append(toc) click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 64
def append(toc)
  children.concat toc.children
  update_time
end
collect_children() click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 69
def collect_children
  children + children.flat_map(&:children)
end
collect_material_ids() click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 73
def collect_material_ids
  collect_children.flat_map(&:material_ids).compact.uniq
end
ordered_material_ids() click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 77
def ordered_material_ids
  [].tap do |ids|
    children.each do |x|
      ids.concat x.material_ids
      ids.concat x.children.flat_map(&:material_ids)
    end
  end.compact
end
prepend(toc) click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 86
def prepend(toc)
  children.unshift(*toc.children)
  update_time
end
total_time_with(excludes) click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 91
def total_time_with(excludes)
  has_optionals = children.any? { |l1| l1.children.any?(&:optional) }
  if has_optionals || excludes.any?
    children.sum { |c| c.time_with(excludes) }
  else
    total_time
  end
end

Private Instance Methods

update_time() click to toggle source
# File lib/doc_template/objects/toc_metadata.rb, line 102
def update_time
  self.total_time = children.sum(&:time)
end