/[Frey]/trunk/lib/Frey/View/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/View/Dumper.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.26