r30384 - in /branches/upstream/libdata-format-html-perl: ./ current/ current/Changes current/MANIFEST current/META.yml current/Makefile.PL current/README current/lib/ current/lib/Data/ current/lib/Data/Format/ current/lib/Data/Format/HTML.pm
antonio-guest at users.alioth.debian.org
antonio-guest at users.alioth.debian.org
Sun Feb 1 14:58:58 UTC 2009
Author: antonio-guest
Date: Sun Feb 1 14:58:55 2009
New Revision: 30384
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=30384
Log:
[svn-inject] Installing original source of libdata-format-html-perl
Added:
branches/upstream/libdata-format-html-perl/
branches/upstream/libdata-format-html-perl/current/
branches/upstream/libdata-format-html-perl/current/Changes
branches/upstream/libdata-format-html-perl/current/MANIFEST
branches/upstream/libdata-format-html-perl/current/META.yml
branches/upstream/libdata-format-html-perl/current/Makefile.PL
branches/upstream/libdata-format-html-perl/current/README
branches/upstream/libdata-format-html-perl/current/lib/
branches/upstream/libdata-format-html-perl/current/lib/Data/
branches/upstream/libdata-format-html-perl/current/lib/Data/Format/
branches/upstream/libdata-format-html-perl/current/lib/Data/Format/HTML.pm
Added: branches/upstream/libdata-format-html-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/Changes?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/Changes (added)
+++ branches/upstream/libdata-format-html-perl/current/Changes Sun Feb 1 14:58:55 2009
@@ -1,0 +1,4 @@
+0.3 Thu Oct 23 12:19:24 EDT 2008
+ Renaming due to name conflict on CPAN
+0.2 Sat Mar 8 21:55:14 EST 2008
+ First unfinished release (as usual).
Added: branches/upstream/libdata-format-html-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/MANIFEST?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/MANIFEST (added)
+++ branches/upstream/libdata-format-html-perl/current/MANIFEST Sun Feb 1 14:58:55 2009
@@ -1,0 +1,6 @@
+lib/Data/Format/HTML.pm
+Changes
+Makefile.PL
+MANIFEST
+README
+META.yml Module meta-data (added by MakeMaker)
Added: branches/upstream/libdata-format-html-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/META.yml?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/META.yml (added)
+++ branches/upstream/libdata-format-html-perl/current/META.yml Sun Feb 1 14:58:55 2009
@@ -1,0 +1,12 @@
+--- #YAML:1.0
+name: Data-Format-HTML
+version: 0.3
+abstract: ~
+license: ~
+author: ~
+generated_by: ExtUtils::MakeMaker version 6.44
+distribution_type: module
+requires:
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.3.html
+ version: 1.3
Added: branches/upstream/libdata-format-html-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/Makefile.PL?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/Makefile.PL (added)
+++ branches/upstream/libdata-format-html-perl/current/Makefile.PL Sun Feb 1 14:58:55 2009
@@ -1,0 +1,8 @@
+#!/usr/bin/perl
+
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+ NAME => 'Data::Format::HTML',
+ VERSION_FROM => 'lib/Data/Format/HTML.pm'
+);
Added: branches/upstream/libdata-format-html-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/README?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/README (added)
+++ branches/upstream/libdata-format-html-perl/current/README Sun Feb 1 14:58:55 2009
@@ -1,0 +1,1 @@
+Harlem, NY and Mexico, together changing the freaking world. LOL
Added: branches/upstream/libdata-format-html-perl/current/lib/Data/Format/HTML.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-format-html-perl/current/lib/Data/Format/HTML.pm?rev=30384&op=file
==============================================================================
--- branches/upstream/libdata-format-html-perl/current/lib/Data/Format/HTML.pm (added)
+++ branches/upstream/libdata-format-html-perl/current/lib/Data/Format/HTML.pm Sun Feb 1 14:58:55 2009
@@ -1,0 +1,248 @@
+#!/usr/bin/perl
+
+package Data::Format::HTML;
+
+use strict;
+use warnings;
+
+our $VERSION = '0.3';
+
+=head1 NAME
+
+Data::Format::HTML - Format Perl data structures into simple HTML
+
+=head1 SYNOPSIS
+
+ 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:
+
+=begin HTML
+
+<table border="1" class="hashTable">
+<tr><th>SCALAR(0x82a2be4)</th><td>goodbye</td></tr>
+
+<tr><th>ARRAY(0x8225570)</th><td><p class="code">CODE(0x8370ac8)</p>
+</td></tr>
+<tr><th>1</th><td>2</td></tr>
+<tr><th>array_ref</th><td><table border="1" class="arrayTable">
+<tr><td>one</td></tr>
+<tr><td>two</td></tr>
+<tr><td>three</td></tr>
+</table>
+</div>
+
+</td></tr>
+<tr><th>nested_hash</th><td><table border="1" class="hashTable">
+<tr><th>simple</th><td>hash</td></tr>
+</table>
+
+</td></tr>
+<tr><th>foo</th><td>bar</td></tr>
+<tr><th>Data::Format::HTML handles it all</th><td><p class="scalar">Data::Format::HTML=HASH(0x82255c4)</p>
+
+</td></tr>
+<tr><th>even_more</th><td><table border="1" class="hashTable">
+<tr><th>arr</th><td><table border="1" class="hashTable">
+<tr><th>1</th><td><table border="1" class="arrayTable">
+<tr><td>2</td></tr>
+<tr><td>3</td></tr>
+<tr><td>4</td></tr>
+</table>
+</div>
+
+</td></tr>
+
+<tr><th>this_is_insane</th><td><table border="1" class="hashTable">
+<tr><th>a</th><td><table border="1" class="hashTable">
+<tr><th>b</th><td><table border="1" class="hashTable">
+<tr><th>c</th><td><table border="1" class="hashTable">
+<tr><th>d</th><td><table border="1" class="hashTable">
+<tr><th>e</th><td>z</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+</table>
+
+</td></tr>
+
+</table>
+
+=end HTML
+
+In theory you can pass any kind of Perl data structure to C<format>
+and you will get its data HTML-formatted.
+
+=head1 TODO
+
+=over
+
+=item *
+
+A LOT. ;)
+
+=item *
+
+Explain how CSS can prettify the tables (specification for everything)
+
+=item *
+
+Get CSS.
+
+=item *
+
+Better support for GLOB, CODE, REF and company.
+
+=item *
+
+Extend this documentation.
+
+=back
+
+=head1 SEE MORE
+
+The author keeps the versioned code at GitHub at: L<http://github.com/damog/data-format-html/tree/master>.
+
+=head1 AUTHOR
+
+David Moreno Garza, E<lt>david at axiombox.comE<gt> - L<http://damog.net/>
+
+=head1 THANKS
+
+To Raquel (L<http://www.maggit.com.mx/>), who makes me happy every single
+day of my life.
+
+=head1 COPYRIGHT AND LICENSE
+
+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.
+
+=cut
+
+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;
+ $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;
More information about the Pkg-perl-cvs-commits
mailing list