/[Frey]/trunk/lib/Frey/Dumper.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/Dumper.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 360 - (hide annotations)
Sun Nov 16 16:44:20 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 1264 byte(s)
added blessed class to pod links, so we don't mungle links within
html content which is not recognized better
1 dpavlin 287 package Frey::Dumper;
2     use Moose;
3    
4 dpavlin 327 with 'Frey::Escape';
5    
6 dpavlin 325 use Data::Dump qw/dump/;
7    
8 dpavlin 287 =head1 NAME
9    
10 dpavlin 325 Frey::Dumper - dump perl data as tree
11 dpavlin 287
12     =cut
13    
14     has data => (
15     is => 'rw',
16     required => 1,
17     );
18    
19     sub markup {
20     my ($self) = @_;
21 dpavlin 327 qq|<div class="frey-dumper">| . $self->unroll( $self->data ) . qq|</div>|;
22     }
23 dpavlin 325
24 dpavlin 327 sub unroll {
25     my ($self,$data,$ref,$key) = @_;
26     my $out;
27     my $title = $ref ? qq| title="$ref"| : '';
28 dpavlin 357
29     $out .= qq|<li${title}>|;
30     my $mark = $key || '&diams;';
31 dpavlin 360 $out .= $ref && $ref !~ m{^(ARRAY|HASH)$} ? qq|<a href="/$ref" class="blessed" target="blessed" title="$ref">$mark</a>| : $key;
32 dpavlin 357
33 dpavlin 327 if ( ref($data) eq 'ARRAY' ) {
34 dpavlin 357 $out .= " &darr;</li>" if $key;
35 dpavlin 329 $out .= qq|<ol${title} start=0>\n|;
36 dpavlin 327 $out .= $self->unroll($_,ref($_)) foreach @$data;
37 dpavlin 329 $out .= "</ol>\n";
38 dpavlin 357 } elsif ( ref($data) && eval { %$data } ) {
39     $out .= " &darr;</li>" if $key;
40 dpavlin 329 $out .= qq|<ul${title}>\n|;
41 dpavlin 327 $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;
42 dpavlin 329 $out .= "</ul>\n";
43 dpavlin 327 } else {
44 dpavlin 357 $out .= " &rarr; " if $key;
45 dpavlin 360 if ( $data =~ m{<(\w+).*>.+</\1>} ) {
46     $out .= qq|<div style="background: #eee; color: #000" title="HTML">$data</div></li>|;
47 dpavlin 347 } else {
48     $out .= "<span>" . $self->html_dump( $data ) . "</span></li>";
49     }
50 dpavlin 325 }
51 dpavlin 357 $out .= "</li>";
52    
53 dpavlin 327 return $out;
54 dpavlin 287 }
55    
56     1;

  ViewVC Help
Powered by ViewVC 1.1.26