class Tempo::Model::Composite

Attributes

children[RW]
parent[RW]

Public Class Methods

delete(instance) click to toggle source
Calls superclass method Tempo::Model::Base::delete
# File lib/tempo/models/composite.rb, line 31
def delete(instance)
  instance.children.each do |child_id|
    child = find_by_id child_id
    instance.remove_child child
  end
  super instance
end
new(options={}) click to toggle source
Calls superclass method Tempo::Model::Base::new
# File lib/tempo/models/composite.rb, line 40
def initialize(options={})
  super options
  @parent = options.fetch(:parent, :root)
  @children = options.fetch(:children, [])
end
report_trees() click to toggle source
# File lib/tempo/models/composite.rb, line 16
def report_trees
  report_array = "["
  @index.each do |member|
    if member.parent == :root
      report_array += "["
      report_array += member.report_branches
      report_array += "],"
    end
  end
  if report_array[-1] == ","
    report_array = report_array[0..-2]
  end
  report_array += "]"
end

Public Instance Methods

<<(child) click to toggle source
# File lib/tempo/models/composite.rb, line 46
def << child
  @children << child.id unless @children.include? child.id
  @children.sort!
  child.parent = self.id
end
remove_child(child) click to toggle source
# File lib/tempo/models/composite.rb, line 52
def remove_child(child)
  @children.delete child.id
  child.parent = :root
end
report_branches() click to toggle source
# File lib/tempo/models/composite.rb, line 57
def report_branches
  report = self.id.to_s
  child_report = ",["
  @children.each do |c|
    child = self.class.find_by_id c
    child_report += "#{child.report_branches},"
  end
  if child_report == ",["
    child_report = ""
  else
    child_report = child_report[0..-2] + "]"
  end
  report += child_report
end