Class: Ruport::Format::OpenNode

Inherits:
OpenStruct
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ruport/format/open_node.rb

Direct Known Subclasses

Page, Section

Instance Method Summary collapse

Constructor Details

#initialize(my_name, parent_name, children_name, name, options = {}) ⇒ OpenNode

Returns a new instance of OpenNode.



6
7
8
9
10
11
12
13
14
# File 'lib/ruport/format/open_node.rb', line 6

def initialize(my_name, parent_name, children_name, name, options={})
  @my_children_name = children_name
  @my_parent_name   = parent_name
  @my_name          = my_name
  super(options)
  self.name = name
  self.send(@my_children_name) || 
  self.send("#{@my_children_name}=".to_sym,{})
end

Instance Method Details

#<<(child) ⇒ Object



25
26
27
28
# File 'lib/ruport/format/open_node.rb', line 25

def <<(child)
  child.send("#{@my_name}=".to_sym, self)
  self.send(@my_children_name)[child.name] = child.dup
end

#[](child_name) ⇒ Object



30
31
32
# File 'lib/ruport/format/open_node.rb', line 30

def [](child_name)
  self.send(@my_children_name)[child_name]
end

#add_child(klass, name, options = {}) ⇒ Object



20
21
22
23
# File 'lib/ruport/format/open_node.rb', line 20

def add_child(klass,name,options={})
  options[@my_name] = self
  self << klass.new(name, options)
end

#each(&p) ⇒ Object



16
17
18
# File 'lib/ruport/format/open_node.rb', line 16

def each &p
  self.send(@my_children_name).values.each(&p)
end