..::Acme::AsciiArt2HtmlTable version 0.01
=========================================
=head1 NAME
Acme::AsciiArt2HtmlTable - Converts Ascii art to an HTML table
=head1 VERSION
Version 0.01
=head1 SYNOPSIS
use Acme::AsciiArt2HtmlTable;
my $table = "ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggyyyyrrrrrrrrrrrr\n" .
"ggggggyyyyrrrrrrrrrrrr\n" .
"gggggyyyyyyrrrrrrrrrrr\n" .
"gggggyyyyyyrrrrrrrrrrr\n" .
"ggggggyyyyrrrrrrrrrrrr\n" .
"ggggggyyyyrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" .
"ggggggggrrrrrrrrrrrrrr\n" ;
my $html = aa2ht( { td => { width => 3 , height => 3 } } , $table);
# $html now holds a table with a color representation of your
# ascii art. In this case, the Portuguese flag.
=head1 FUNCTIONS
=head2 aa2ht
Gets ascii text and converts it to an HTML table. This is how it works:
=over 4
=item * each line is a C<tr> element
=item * each letter is a C<td> element
=item * each C<td> has background of a specific color, which is
defined by the letter that created it
=back
=head3 OPTIONS
You can pass a reference to a hash before the text you want to
convert.
=head4 id
In order to save space in the output, C<td> and C<tr> elements'
attributes are not in each element, but rather in a C<style> element.
This causes a problem if you want to put two different outputs with
different attributes on the same page.
To solve this problem: C<id>.
When creating a table, use the parameter C<id> to make sure it doesn't
end up mixed up with something else.
my $html = aa2ht( { 'id' => 'special' } $ascii );
The result will be something like this:
<style>
.special td { width:1; height:1; }
.special tr { }
</style>
<table class="special" cellspacing="0" cellpadding="0" border="0">
=head4 use-default-colors
If set to a false value, no default mappings are used.
my $html = aa2ht( { 'use-default-colors' => 0 }, $ascii);
Behind the curtains, there is still a mapping: the default mapping to
white.
=head4 colors
You can override color definitions or specify your own.
my $html = aa2ht( { 'colors' => { '@' => 'ffddee',
'g' => '00ffff' } }, $ascii);
=head4 randomize-new-colors
If set to a true value, letters with no mappings are assigned a
random one.
my $html = aa2ht( { 'randomize-new-colors' => 1 }, $ascii);
You might want to remove the default mappings if you're really
interested in a completely random effect:
my $html = aa2ht( { 'use-default-colors' => 0,
'randomize-new-colors' => 1 }, $ascii);
You might also want to keep the white space as a white block:
my $html = aa2ht( { 'use-default-colors' => 0,
'colors' => { ' ' => 'ffffff'},
'randomize-new-colors' => 1 }, $ascii);
=head4 table
With the parameter C<table> you can specify specific values for fields
like C<border>, C<cellpadding> and C<cellspacing> (all these have
value "0" by default).
my $html = aa2ht( { 'table' => { 'border' => '1' } }, $ascii );
These attributes go directly into the C<table> tag.
=head4 tr
With the C<tr> parameter you can specify specific values for C<tr>'s
attributes.
These attributes go into a C<style> tag. The table class uses that
style.
=head4 td
With the C<td> parameter you can specify specific values for C<td>'s
attributes, like C<width> or C<height>.
my $html = aa2ht( { 'td' => { 'width' => '2px',
'height' => '2px' } }, $ascii);
These attributes go into a C<style> tag. The table class uses that
style.
=head3 SPECIALS
=head4 optimization
Table optimization, which is disabled by default, uses the C<rowspan>
and C<colspan> C<td> attributes to save up space.
my $html = aa2ht( { 'optimization' => 1 }, $ascii );
When the optimization algorithm sees a chance of turning some cells
into a big one, it does so. It always chooses the biggest area
possible for optimizing.
If two different areas suitable for optimization starting from a given
cell are available and both present the same area size, the algorithm
picks the one that maximizes width.
=head4 default color
By default, an unmapped character is mapped to the default color,
which is black.
You can override this color by assigning a different mapping to
"default" with the C<colors> option.
my $html = aa2ht( { 'colors' => { 'default' => 'ffffff' } }, $ascii);
This, for instance, makes the default color be white, thus making only
the recognized characters show up colored on the table.
=head1 MAPPINGS ( LETTER -> COLOR )
The following letters are mapped to colors in the following way:
l 000000 # black
b 0000ff # blue
o a52a2a # brown
g 00ff00 # green
a bebebe # gray
e bebebe # grey
m ff00ff # magenta
o ffa500 # orange
p ffc0cb # pink
u a020f0 # purple
r ff0000 # red
w ffffff # white
y ffff00 # yellow
L 000000 # light black
B add8e6 # lighe blue
O a52a2a # light brown
G 90ee90 # light green
A d3d3d3 # light gray
E d3d3d3 # light grey
M ff00ff # light magenta
O ffa500 # light orange
P ffb6c1 # light pink
U 9370db # light purple
R cd5c5c # light red
W ffffff # light white
Y ffffe0 # light yellow
Spaces are mapped to white:
ffffff # white
By default, everything else is mapped to black
default 000000 # black
=head1 SEE ALSO
The examples/ directory.
=head1 AUTHOR
Jose Castro, C<< <cog@cpan.org> >>
=head1 CAVEATS
If you specify the C<rowspan> or C<colspan> for C<td> elements and you
also ask for optimization... I don't even want to imagine what will
happen...
=head1 BUGS
Please report any bugs or feature requests to
C<bug-acme-tablethis@rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org>. I will be notified, and then you'll automatically
be notified of progress on your bug as I make changes.
=head1 COPYRIGHT & LICENSE
Copyright 2005 Jose Castro, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.