Class: RTF::TableRowNode

Inherits:
ContainerNode show all
Defined in:
lib/rtf/node.rb

Overview

This class represents a row within an RTF table. The TableRowNode is a specialised container node that can hold only TableCellNodes and, once created, cannot be resized. Its also not possible to change the parent of a TableRowNode object.

Instance Attribute Summary

Attributes inherited from ContainerNode

#children

Attributes inherited from Node

#parent

Instance Method Summary collapse

Methods inherited from ContainerNode

#[], #each, #first, #last, #size, #store

Methods inherited from Node

#is_root?, #next_node, #previous_node, #root

Constructor Details

#initialize(table, cells, *widths) ⇒ TableRowNode

This is the constructor for the TableRowNode class.

Parameters
table

A reference to table that owns the row.

cells

The number of cells that the row will contain.

widths

One or more integers specifying the widths for the table columns



662
663
664
665
666
667
668
669
670
# File 'lib/rtf/node.rb', line 662

def initialize(table, cells, *widths)
   super(table) do
      entries = []
      cells.times do |index|
         entries.push(TableCellNode.new(self, widths[index]))
      end
      entries
   end
end

Instance Method Details

#border_width=(width) ⇒ Object

This method assigns a border width setting to all of the sides on all of the cells within a table row.

Parameters

width

The border width setting to apply. Negative values are ignored and zero switches the border off.



683
684
685
# File 'lib/rtf/node.rb', line 683

def border_width=(width)
   self.each {|cell| cell.border_width = width}
end

#lengthObject

Attrobute accessors



673
674
675
# File 'lib/rtf/node.rb', line 673

def length
   entries.size
end

#parent=(parent) ⇒ Object

This method overloads the parent= method inherited from the Node class to forbid the alteration of the cells parent.

Parameters

parent

A reference to the new node parent.



692
693
694
# File 'lib/rtf/node.rb', line 692

def parent=(parent)
   RTFError.fire("Table row nodes cannot have their parent changed.")
end

#shading_colour=(colour) ⇒ Object

This method sets the shading colour for a row.

Parameters

colour

A reference to the Colour object that represents the new shading colour. Set to nil to switch shading off.



701
702
703
# File 'lib/rtf/node.rb', line 701

def shading_colour=(colour)
   self.each {|cell| cell.shading_colour = colour}
end

#to_rtfObject

This method generates the RTF document text for a TableCellNode object.



715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
# File 'lib/rtf/node.rb', line 715

def to_rtf
   text   = StringIO.new
   temp   = StringIO.new
   offset = 0

   text << "\\trowd\\tgraph#{parent.cell_margin}"
   self.each do |entry|
      widths = entry.border_widths
      colour = entry.shading_colour

      text << "\n"
      text << "\\clbrdrt\\brdrw#{widths[0]}\\brdrs" if widths[0] != 0
      text << "\\clbrdrl\\brdrw#{widths[3]}\\brdrs" if widths[3] != 0
      text << "\\clbrdrb\\brdrw#{widths[2]}\\brdrs" if widths[2] != 0
      text << "\\clbrdrr\\brdrw#{widths[1]}\\brdrs" if widths[1] != 0
      text << "\\clcbpat#{root.colours.index(colour)}" if colour != nil
      text << "\\cellx#{entry.width + offset}"
      temp << "\n#{entry.to_rtf}"
      offset += entry.width
   end
   text << "#{temp.string}\n\\row"

   text.string
end