| Data-Format-HTML documentation | Contained in the Data-Format-HTML distribution. |
Data::Format::HTML - Format Perl data structures into simple HTML
use Data::Format::HTML;
my $f = Data::Format::HTML->new;
my %hash = (simple => 'hash');
# Of course it's very unlikely that you won't deal ever with this
# kind of structure, but HTML is able to hand it all anyway :)
my $struct = {
foo => 'bar',
1 => 2,
\'hello' => 'goodbye',
array_ref => [qw/one two three/],
nested_hash => \%hash,
[qw/1 2/] => sub { die; },
even_more => { arr => {
1 => [2, 3, 4],
this_is_insane => { a => { b => { c => { d => { e => 'z'}}}}}
},
},
};
$struct->{'Data::Format::HTML handles it all'} = $f;
print $f->format();
And that will output the following insane, but possible, for the sake of showing, HTML:
In theory you can pass any kind of Perl data structure to format
and you will get its data HTML-formatted.
The author keeps the versioned code at GitHub at: http://github.com/damog/data-format-html/tree/master.
David Moreno Garza, <david@axiombox.com> - http://damog.net/
To Raquel (http://www.maggit.com.mx/), who makes me happy every single day of my life.
Copyright (C) 2008 by David Moreno Garza
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
The Do What The Fuck You Want To public license also applies. It's really up to you.
| Data-Format-HTML documentation | Contained in the Data-Format-HTML distribution. |
#!/usr/bin/perl package Data::Format::HTML; use strict; use warnings; our $VERSION = '0.5';
use Switch 'Perl6'; use Data::Dumper; use HTML::Entities; sub new { my($self, %opts) = shift; return bless { css => $opts{css} || '', var => undef, title => undef, }, $self; } sub format { my($self, $var, $title) = @_; my $output; if(defined $title) { $output .= qq{<h2>$title</h2>\n}; } $output .= $self->_format($var); } sub _format { my($self, $var) = @_; given (ref $var) { when 'SCALAR' { return $self->_format_scalar($var); } when 'ARRAY' { return $self->_format_array($var); } when 'HASH' { return $self->_format_hash($var); } when 'CODE' { return $self->_format_code($var); } # when 'REF' { return $self->_format_ref($var); } when '' { return $self->_format_scalar(\$var); } default { return $self->_format_scalar(\$var); } } } sub _format_code { my($self, $code) = @_; qq{<p class="code">}.scalar($code).qq{</p>\n}; } sub _format_hash { my($self, $hash) = @_; my $o = qq{<table border="1" class="hashTable">\n}; while(my($k, $v) = each %{$hash}) { $k = $self->_format($k) if ref $k; $v = $self->_format($v) if ref $v; $v = '' unless defined $v; $o .= "<tr><th>$k</th><td>$v</td></tr>\n"; } $o .= qq{</table>\n\n}; } sub _format_array { my($self, $arr) = @_; my $output = qq{<table border="1" class="arrayTable">\n}; foreach my $v (@{$arr}) { $v = $self->_format($v) if ref $v; $output .= qq{<tr><td>$v</td></tr>\n}; } $output .= "</table>\n</div>\n\n"; } sub _format_scalar { my($self, $var) = @_; qq{<p class="scalar">${$var}</p>\n\n}; } 1;