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



681
682
683
684
685
686
687
688
689
# File 'lib/rtf/node.rb', line 681

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.



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

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

#lengthObject

Attribute accessors



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

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.



711
712
713
# File 'lib/rtf/node.rb', line 711

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.



720
721
722
# File 'lib/rtf/node.rb', line 720

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.



734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
# File 'lib/rtf/node.rb', line 734

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