/[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

Diff of /trunk/lib/Frey/View/Dumper.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 287 by dpavlin, Wed Nov 5 08:20:59 2008 UTC revision 347 by dpavlin, Sat Nov 15 16:38:39 2008 UTC
# Line 1  Line 1 
1  package Frey::Dumper;  package Frey::Dumper;
2  use Moose;  use Moose;
3    
4    with 'Frey::Escape';
5    
6    use Data::Dump qw/dump/;
7    
8  =head1 NAME  =head1 NAME
9    
10  Frey::Dumper - dump data using L<Data::Dumper::HTML>  Frey::Dumper - dump perl data as tree
11    
12  =cut  =cut
13    
 use Data::Dumper::HTML qw(dumper_html);  
   
14  has data => (  has data => (
15          is => 'rw',          is => 'rw',
16          required => 1,          required => 1,
# Line 16  has data => ( Line 18  has data => (
18    
19  sub markup {  sub markup {
20          my ($self) = @_;          my ($self) = @_;
21          dumper_html( $self->data );          qq|<div class="frey-dumper">| . $self->unroll( $self->data ) . qq|</div>|;
22    }
23    
24    sub unroll {
25            my ($self,$data,$ref,$key) = @_;
26            my $out;
27            my $title = $ref ? qq| title="$ref"| : '';
28            if ( ref($data) eq 'ARRAY' ) {
29                    $out .= "<li>$key &darr;</li>" if $key;
30                    $out .= qq|<ol${title} start=0>\n|;
31                    $out .= $self->unroll($_,ref($_)) foreach @$data;
32                    $out .= "</ol>\n";
33            } elsif ( ref($data) ) {
34                    $out .= "<li>$key &darr;</li>" if $key;
35                    $out .= qq|<ul${title}>\n|;
36                    $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;
37                    $out .= "</ul>\n";
38            } else {
39                    $out .= qq|<li${title}>|;
40                    $out .= "$key &rarr; " if $key;
41                    if ( $data =~ m{<(\w+)>.+</\1>} ) {
42                            $out .= qq|<div style="background: #eee; color: #000">$data</div></li>|;
43                    } else {
44                            $out .= "<span>" . $self->html_dump( $data ) . "</span></li>";
45                    }
46            }
47            return $out;
48  }  }
49    
50  1;  1;

Legend:
Removed from v.287  
changed lines
  Added in v.347

  ViewVC Help
Powered by ViewVC 1.1.26