Class: RRTF::TableNode
- Inherits:
-
ContainerNode
- Object
- Node
- ContainerNode
- RRTF::TableNode
- Defined in:
- lib/rrtf/node/table_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 table.
- columns
-
The number of columns in the table.
- *widths
-
One or more integers specifying the widths of the table columns.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rrtf/node/table_node.rb', line 17 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
7 8 9 |
# File 'lib/rrtf/node/table_node.rb', line 7 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.
52 53 54 |
# File 'lib/rrtf/node/table_node.rb', line 52 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.
77 78 79 80 81 82 |
# File 'lib/rrtf/node/table_node.rb', line 77 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.
42 43 44 |
# File 'lib/rrtf/node/table_node.rb', line 42 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.
64 65 66 67 |
# File 'lib/rrtf/node/table_node.rb', line 64 def row_shading_colour(index, colour) row = self[index] row.shading_colour = colour if row != nil end |
#rows ⇒ Object
Attribute accessor.
37 38 39 |
# File 'lib/rrtf/node/table_node.rb', line 37 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.
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rrtf/node/table_node.rb', line 94 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.
111 112 113 |
# File 'lib/rrtf/node/table_node.rb', line 111 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.
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/rrtf/node/table_node.rb', line 116 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 |