NAME
Text::Table::HTML - Generate HTML table
VERSION
This document describes version 0.011 of Text::Table::HTML (from Perl distribution Text-Table-HTML), released on 2024-06-13.
SYNOPSIS
use Text::Table::HTML;
my $rows = [
# header row
['Name', 'Rank', 'Serial'],
# rows
['alice', 'pvt', '123<456>'],
['bob', 'cpl', '98765321'],
['carol', 'brig gen', '8745'],
];
print Text::Table::HTML::table(rows => $rows, header_row => 1);
DESCRIPTION
This module provides a single function, table
, which formats a two-dimensional array of data as HTML table. Its interface was first modelled after Text::Table::Tiny 0.03.
The example shown in the SYNOPSIS generates the following table:
<table>
<thead>
<tr><th>Name</th><th>Rank</th><th>Serial</th></tr>
</thead>
<tbody>
<tr><td>alice</td><td>pvt</td><td>123<456></td></tr>
<tr><td>bob</td><td>cpl</td><td>98765321</td></tr>
<tr><td>carol</td><td>brig gen</td><td>8745</td></tr>
</tbody>
</table>
COMPATIBILITY NOTES WITH TEXT::TABLE::TINY
In Text::Table::HTML
, header_row
is an integer instead of boolean. It supports multiple header rows.
Cells in rows
can be hashrefs instead of scalars.
FUNCTIONS
table(%params) => str
OPTIONS
The table
function understands these arguments, which are passed as a hash.
rows
Required. Array of array of (scalars or hashrefs). One or more rows of data, where each row is an array reference. Each array element is a string (cell content) or hashref (with key
text
to contain the cell text orraw_html
to contain the cell's raw HTML which won't be escaped further), and optionally other cell and HTML attributes:align
,bottom_border
,colspan
,html_class
,html_element
,html_headers
,html_id
,html_scope
,html_style
,rowspan
).The
html_element
attribute specifies the name of the HTML element to use for that cell. It defaults toth
for header rows andtd
for data rows.If the
bottom_border
attribute is set, the row element will have a class attribute ofhas_bottom_border
.For example,
header_row => 1, rows => [ [ ' ', 'January', 'December' ], [ { html_element => 'th', text => 'Boots' } , 20, 30 ], [ { html_element => 'th', text => 'Frocks' } , 40, 50 ], ]
generates a table where each entry in the first row is a header element, and the first entry in subsequent rows is an element.
caption
Optional. Str. If set, will add an HTML
<caption>
element to set the table caption.header_row
Optional. Integer. Default 0. Whether we should add header row(s) (rows inside
<thead>
instead of<tbody>
). Support multiple header rows; you can set this argument to an integer larger than 1.footer_row
Optional. Integer. Default 0. Whether we should add footer row(s) (rows inside
<tfoot>
instead of<tbody>
). Supports multiple footer rows.If the footer rows are found immediately after the header rows (if any) in the
rows
array, setfooter_row
to the number of rows.If the footer rows are the last rows in
rows
, setfooter_row
to the negative number of rows.
separate_rows
Boolean. Optional. Default 0. If set to true is equivalent to setting the
bottom_border
attribute for each row.html_colgroup
Optional. An array of scalars or hashes which define a
colgroup
block.The array should contain one entry per column or per span of columns. Each entry will result in a new
col
element, with the following mapping:undefined
If an entry is
undef
,then an emptycol
element will be added.hash
A hash is translated into element attributes named after its keys.
Empty hashes result in an empty
col
element.scalars
A scalar must be a string containig a complete specification of an attribute, and is inserted verbatim into the element.
For example,
html_colgroup => [ undef, {}, q{span="2"}, { class => 'batman' } ]
results in
<colgroup> <col/> <col/> <col span="2" /> <col class="batman" /> </colgroup>
html_attr
Optional. Hash. The hash entries are added as attributes to the
table
HTML element.html_id
Optional. Scalar. The table element's id attribute.
html_class
Optional. Scalar. The table element's class attribute.
html_style
Optional. Scalar. The table element's style attribute.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Text-Table-HTML.
SOURCE
Source repository is at https://github.com/perlancar/perl-Text-Table-HTML.
SEE ALSO
Bencher::Scenario::TextTableModules
AUTHOR
perlancar <perlancar@cpan.org>
CONTRIBUTOR
Diab Jerius <djerius@cfa.harvard.edu>
CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on GitHub.
Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:
% prove -l
If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.
COPYRIGHT AND LICENSE
This software is copyright (c) 2024, 2023, 2022, 2021, 2017, 2016 by perlancar <perlancar@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Table-HTML
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.