Description

A Table::Row object represents a single <TR></TR> instance for an HTML
Table.  Although it is nested under Table, it is not a subclass of Table.
It is, however, a subclass of Array.

Synopsis

require "html/table"
include HTML

table = HTML::Table.new

row1 = Table::Row.new{ |r|
   r.align   = "left"
   r.bgcolor = "green"
   r.content = ["foo","bar","baz"]
}

row2 = Table::Row.new{ |r|
   r.align   = "right"
   r.bgcolor = "blue"
   r.content = "hello world"
}

table.push row1, row2

row1.content = "foofoo"
row1.configure(3){ |d| d.bgcolor = "pink" }

row1.push Table::Row::Header.new{ |h|
   h.colspan = 2
   h.content = "This is a table header"
}

row2.push Table::Row::Header.new{ |h|
   h.colspan = 2
   h.content = "This is also a table header"
}

puts table.html

#### output ####
<table>
   <tr align='left' bgcolor='green'>
      <td>foo</td>
      <td>bar</td>
      <td>baz</td>
     <td bgcolor='pink'>foofoo</td>
      <th colspan=2>This is a table header</th>
   </tr>
   <tr align='right' bgcolor='blue'>
     <td>hello world</td>
      <th colspan=2>This is also a table header</th>
   </tr>
</table>

See the 'examples' directory for more examples.

Mixins

Table::Row is a subclass of Array and therefore mixes in Enumerable.  It
also mixes in Attribute_Handler.

Class Methods

Table::Row.new(arg=nil) Table::Row.new(arg=nil){ |t| … }

Creates a new table.  You can set attributes for the TableRow by passing
a block.

If +arg+ is supplied, it is automatically interpreted to be content.
This is a shortcut for Table::Row.new{ |r| r.content = '...' }.

Instance Methods

Table::Row#[]=(index,obj)

Assigns +obj+ to index.  The +obj+ must be a Table::Row::Header or
Table::Row::Data object, or a TypeError is raised.

Table::Row#content

Returns the HTML content of the TableRow instance, i.e. the stuff between
the <TR> and </TR> tags.

Table::Row#content=(args)

Because a Table::Row doesn't store any of its own content, the arguments
to this method must be a Table::Row::Data object, a Table::Row::Header
object, or a String (or an array of any of these).  In the latter case,
a single Table::Row::Data object is created for each string.

Table::Row#html

Returns the entire HTML content of the TableRow instance.

Table::Row#push(obj)

Pushes +obj+ onto the Table::Row. The +obj+ must be a
Table::Row::Data or Table::Row::Header object, or a TypeError is
raised.

Table::Row#unshift(obj)

Unshifts +obj+ onto the Table::Row.  The same rules for push apply
to unshift as well.

Notes

String attributes are quoted.  Numeric attributes are not.

Some attributes have type checking.  Some check for valid arguments.  In
the latter case, it is case-insensitive.

Using a non-standard extension (e.g. "background") will send a warning to
STDERR in $VERBOSE (-w) mode.