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



844
845
846
847
848
849
850
851
852
# File 'lib/rtf/node.rb', line 844

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.



865
866
867
# File 'lib/rtf/node.rb', line 865

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

#lengthObject

Attribute accessors



855
856
857
# File 'lib/rtf/node.rb', line 855

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.



874
875
876
# File 'lib/rtf/node.rb', line 874

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.



883
884
885
# File 'lib/rtf/node.rb', line 883

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.



897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
# File 'lib/rtf/node.rb', line 897

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