Class: RRTF::TableNode
- Inherits:
-
ContainerNode
- Object
- Node
- ContainerNode
- RRTF::TableNode
- Defined in:
- lib/rrtf/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.
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 |
# File 'lib/rrtf/node.rb', line 713 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
703 704 705 |
# File 'lib/rrtf/node.rb', line 703 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.
748 749 750 |
# File 'lib/rrtf/node.rb', line 748 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.
773 774 775 776 777 778 |
# File 'lib/rrtf/node.rb', line 773 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.
738 739 740 |
# File 'lib/rrtf/node.rb', line 738 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.
760 761 762 763 |
# File 'lib/rrtf/node.rb', line 760 def row_shading_colour(index, colour) row = self[index] row.shading_colour = colour if row != nil end |
#rows ⇒ Object
Attribute accessor.
733 734 735 |
# File 'lib/rrtf/node.rb', line 733 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.
790 791 792 793 794 795 796 797 798 799 800 |
# File 'lib/rrtf/node.rb', line 790 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.
807 808 809 |
# File 'lib/rrtf/node.rb', line 807 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.
812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 |
# File 'lib/rrtf/node.rb', line 812 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 |