Provided by: libhtml-element-extended-perl_1.18-1.3_all bug

NAME

       HTML::ElementTable - Perl extension for manipulating a table composed of HTML::Element style components.

SYNOPSIS

         use HTML::ElementTable;
         # Create a table 0..10 x 0..12
         $t = new HTML::ElementTable maxrow => 10, maxcol => 12;

         # Populate cells with coordinates
         $t->table->push_position;

         # Manipulate <TABLE> tag
         $t->attr('cellspacing',0);
         $t->attr('border',1);
         $t->attr('bgcolor','#DDBB00');

         # Manipulate entire table - optimize on <TR> or pass to all <TD>
         $t->table->attr('align','left');
         $t->table->attr('valign','top');

         # Manipulate rows (optimizes on <TR> if possible)
         $t->row(0,2,4,6)->attr('bgcolor','#9999FF');

         # Manipulate columns (all go to <TD> tags within column)
         $t->col(0,4,8,12)->attr('bgcolor','#BBFFBB');

         # Manipulate boxes (all go to <TD> elements
         # unless it contains full rows, then <TR>)
         $t->box(7,1 => 10,3)->attr('bgcolor','magenta');
         $t->box(7,7 => 10,5)->attr('bgcolor','magenta');
         $t->box(8,9 => 9,11)->attr('bgcolor','magenta');
         $t->box(7,10 => 10,10)->attr('bgcolor','magenta');

         # individual <TD> or <TH> attributes
         $t->cell(8,6)->attr('bgcolor','#FFAAAA');
         $t->cell(9,6)->attr('bgcolor','#FFAAAA');
         $t->cell(7,9, 10,9, 7,11, 10,11)->attr('bgcolor','#FFAAAA');

         # Take a look
         print $t->as_HTML;

DESCRIPTION

       HTML::ElementTable provides a highly enhanced HTML::ElementSuper structure with methods designed to
       easily manipulate table elements by using coordinates. Elements can be manipulated in bulk by individual
       cells, arbitrary groupings of cells, boxes, columns, rows, or the entire table.

PUBLIC METHODS

       Table coordinates start at 0,0 in the upper left cell.

       CONSTRUCTORS

       new()
       new(maxrow => row, maxcol => col)
           Return a new HTML::ElementTable object. If the number of rows and columns were provided, all elements
           required for the rows and columns will be initialized as well. See extent().

       new_from_tree($tree)
           Takes  an  existing  top-level  HTML::Element  representing  a  table  and  converts the entire table
           structure into a cohesive HTML::ElementTable construct. (this is potentially useful if  you  want  to
           use the power of this module for editing HTML tables in situ within an HTML::Element tree).

       TABLE CONFIGURATION

       extent()
       extent(maxrow, maxcolumn)
           Set  or  return  the  extent  of  the current table. The maxrow and maxcolumn parameters indicate the
           maximum row and column coordinates you desire in the table. These are the coordinates  of  the  lower
           right  cell in the table, starting from (0,0) at the upper left.  Providing a smaller extent than the
           current one will shrink the table with no ill effect, provided you do not mind losing the information
           in the clipped cells.

       maxrow()
           Set or return the coordinate of the last row.

       maxcol()
           Set or return the coordinate of the last column.

       ELEMENT ACCESS

       Unless accessing a single element, most table element access is accomplished  through  globs,  which  are
       collections of elements that behave as if they were a single element object.

       Whenever  possible,  globbed  operations are optimized into the most appropriate element. For example, if
       you set an attribute for a row glob, the attribute will  be  set  either  on  the  <TR>  element  or  the
       collected <TD> elements, whichever is appropriate.

       See HTML::ElementGlob(3) for more information on element globs.

       cell(row,col,[row2,col2],[...])
           Access an individual cell or collection of cells by their coordinates.

       row(row,[row2,...])
           Access the contents of a row or collection of rows by row coordinate.

       col(col,[col2,...])
           Access the contents of a column or collection of columns by column coordinate.

       box(row_a1,col_a1,row_a2,col_a2,[row_b1,col_b1,row_b2,col_b2],[...])
           Access  the  contents  of  a span of cells, specified as a box consisting of two sets of coordinates.
           Multiple boxes can be specified.

       table()
           Access all cells in the table. This is different from manipulating the table object itself, which  is
           reserved  for  such  things as CELLSPACING and other attributes specific to the <TABLE> tag. However,
           since table() returns a glob of cells, if the attribute is more appropriate for the top level <TABLE>
           tag, it will be placed there rather than in each <TR> tag or every <TD> tag.

       ELEMENT/GLOB METHODS

       The interfaces to a single table element or a glob of elements are identical. All methods available  from
       the  HTML::ElementSuper  class  are  also  available  to  a  table  element  or  glob  of  elements.  See
       HTML::ElementSuper(3) for details on these methods.

       Briefly, here are some of the more useful methods provided by HTML::ElementSuper:

       attr()
       push_content()
       replace_content()
       wrap_content()
       clone([element])
       mask([mode])

       TABLE SPECIFIC EXTENSIONS

       blank_fill([mode])
           Set or return the current fill mode for blank  cells.  The  default  is  0  for  HTML::Element::Table
           elements.  When  most  browsers render tables, if they are empty you will get a box the color of your
           browser background color rather than the BGCOLOR of that cell. When enabled, empty cells are provided
           with an '&nbsp;', or invisible content, which will trigger the rendering  of  the  BGCOLOR  for  that
           cell.

NOTES ON GLOBS

       Globbing was a convenient way to treat arbitrary collections of table cells as if they were a single HTML
       element. Methods are generally passed blindly and sequentially to the elements they contain.

       Most of the time, this is fairly intuitive, such as when you are setting the attributes of the cells.

       Other  times, it might be problematic, such as with push_content(). Do you push the same object to all of
       the cells? HTML::Element based classes only support one parent, so this breaks if you  try  to  push  the
       same  element  into  multiple  parental  hopefuls.  In  the specific case of push_content() on globs, the
       elements that eventually get pushed are clones of the originally provided content. It works,  but  it  is
       not necessarily what you expect. An incestuous HTML element tree is probably not what you want anyway.

       See HTML::ElementGlob(3) for more details on how globs work.

REQUIRES

       HTML::ElementSuper, HTML::ElementGlob

AUTHOR

       Matthew P. Sisk, <sisk@mojotoad.com>

ACKNOWLEDGEMENTS

       Thanks to William R. Ward for some conceptual nudging.

COPYRIGHT

       Copyright  (c)  1998-2010 Matthew P. Sisk. All rights reserved. All wrongs revenged. This program is free
       software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

       A      useful      page      of      HTML::ElementTable      examples      can      be      found      at
       http://www.mojotoad.com/sisk/projects/HTML-Element-Extended/examples.html.

       HTML::ElementSuper(3), HTML::ElementGlob(3), HTML::Element(3), HTML::TableExtract(3), perl(1).

perl v5.36.0                                       2022-12-02                            HTML::ElementTable(3pm)