Class: RTF::TableNode
- Inherits:
-
ContainerNode
- Object
- Node
- ContainerNode
- RTF::TableNode
- Defined in:
- lib/rtf/node.rb
Overview
This class represents a table node within an RTF document. Table nodes are specialised container nodes that contain only TableRowNodes and have their size specified when they are created an cannot be resized after that.
Instance Attribute Summary collapse
-
#cell_margin ⇒ Object
Cell margin.
Attributes inherited from ContainerNode
Attributes inherited from Node
Instance Method Summary collapse
-
#border_width=(width) ⇒ Object
This method assigns a border width setting to all of the sides on all of the cells within a table.
-
#column_shading_colour(index, colour) ⇒ Object
(also: #column_shading_color)
This method assigns a shading colour to a specified column within a TableNode object.
-
#columns ⇒ Object
Attribute accessor.
-
#initialize(parent, *args, &block) ⇒ TableNode
constructor
This is a constructor for the TableNode class.
-
#row_shading_colour(index, colour) ⇒ Object
(also: #row_shading_color)
This method assigns a shading colour to a specified row within a TableNode object.
-
#rows ⇒ Object
Attribute accessor.
-
#shading_colour(colour) ⇒ Object
(also: #shading_color)
This method provides a means of assigning a shading colour to a selection of cells within a table.
-
#store(node) ⇒ Object
This method overloads the store method inherited from the ContainerNode class to forbid addition of further nodes.
-
#to_rtf ⇒ Object
This method generates the RTF document text for a TableCellNode object.
Methods inherited from ContainerNode
#[], #each, #first, #last, #size
Methods inherited from Node
#is_root?, #next_node, #previous_node, #root
Constructor Details
#initialize(parent, *args, &block) ⇒ TableNode
This is a constructor for the TableNode class.
Parameters
- parent
-
A reference to the node that owns the table.
- rows
-
The number of rows in the tabkle.
- columns
-
The number of columns in the table.
- *widths
-
One or more integers specifying the widths of the table columns.
720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 |
# File 'lib/rtf/node.rb', line 720 def initialize(parent, *args, &block) if args.size>=2 rows=args.shift columns=args.shift widths=args super(parent) do entries = [] rows.times {entries.push(TableRowNode.new(self, columns, *widths))} entries end elsif block block.arity<1 ? self.instance_eval(&block) : block.call(self) else raise "You should use 0 or >2 args" end @cell_margin = 100 end |
Instance Attribute Details
#cell_margin ⇒ Object
Cell margin. Default to 100
710 711 712 |
# File 'lib/rtf/node.rb', line 710 def cell_margin @cell_margin 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.
Parameters
- width
-
The border width setting to apply. Negative values are ignored and zero switches the border off.
755 756 757 |
# File 'lib/rtf/node.rb', line 755 def border_width=(width) self.each {|row| row.border_width = width} end |
#column_shading_colour(index, colour) ⇒ Object Also known as: column_shading_color
This method assigns a shading colour to a specified column within a TableNode object.
Parameters
- index
-
The offset from the first column of the column to have shading applied to it.
- colour
-
A reference to a Colour object representing the shading colour to be used. Set to nil to clear shading.
780 781 782 783 784 785 |
# File 'lib/rtf/node.rb', line 780 def column_shading_colour(index, colour) self.each do |row| cell = row[index] cell.shading_colour = colour if cell != nil end end |
#columns ⇒ Object
Attribute accessor.
745 746 747 |
# File 'lib/rtf/node.rb', line 745 def columns entries[0].length end |
#row_shading_colour(index, colour) ⇒ Object Also known as: row_shading_color
This method assigns a shading colour to a specified row within a TableNode object.
Parameters
- index
-
The offset from the first row of the row to have shading applied to it.
- colour
-
A reference to a Colour object representing the shading colour to be used. Set to nil to clear shading.
767 768 769 770 |
# File 'lib/rtf/node.rb', line 767 def row_shading_colour(index, colour) row = self[index] row.shading_colour = colour if row != nil end |
#rows ⇒ Object
Attribute accessor.
740 741 742 |
# File 'lib/rtf/node.rb', line 740 def rows entries.size end |
#shading_colour(colour) ⇒ Object Also known as: shading_color
This method provides a means of assigning a shading colour to a selection of cells within a table. The method accepts a block that takes three parameters - a TableCellNode representing a cell within the table, an integer representing the x offset of the cell and an integer representing the y offset of the cell. If the block returns true then shading will be applied to the cell.
Parameters
- colour
-
A reference to a Colour object representing the shading colour to be applied. Set to nil to remove shading.
797 798 799 800 801 802 803 804 805 806 807 |
# File 'lib/rtf/node.rb', line 797 def shading_colour(colour) if block_given? 0.upto(self.size - 1) do |x| row = self[x] 0.upto(row.size - 1) do |y| apply = yield row[y], x, y row[y].shading_colour = colour if apply end end end end |
#store(node) ⇒ Object
This method overloads the store method inherited from the ContainerNode class to forbid addition of further nodes.
Parameters
- node
-
A reference to the node to be added.
814 815 816 |
# File 'lib/rtf/node.rb', line 814 def store(node) RTFError.fire("Table nodes cannot have nodes added to.") end |
#to_rtf ⇒ Object
This method generates the RTF document text for a TableCellNode object.
819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 |
# File 'lib/rtf/node.rb', line 819 def to_rtf text = StringIO.new size = 0 self.each do |row| if size > 0 text << "\n" else size = 1 end text << row.to_rtf end text.string.sub(/\\row(?!.*\\row)/m, "\\lastrow\n\\row") end |