/[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 325 by dpavlin, Thu Nov 6 20:25:04 2008 UTC revision 455 by dpavlin, Wed Nov 19 15:28:23 2008 UTC
# Line 1  Line 1 
1  package Frey::Dumper;  package Frey::Dumper;
2  use Moose;  use Moose;
3    
4    with 'Frey::Web';
5    with 'Frey::Escape';
6    
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
8    
9  =head1 NAME  =head1 NAME
# Line 14  has data => ( Line 17  has data => (
17          required => 1,          required => 1,
18  );  );
19    
20  sub markup {  sub as_markup {
21          my ($self) = @_;          my ($self) = @_;
22            qq|<div class="frey-dumper">| . $self->unroll( $self->data ) . qq|</div>|;
23    }
24    
25          sub unroll {  sub unroll {
26                  my ($data,$ref,$key) = @_;          my ($self,$data,$ref,$key) = @_;
27                  my $out;          my $out;
28                  my $title = $ref ? qq| title="$ref"| : '';          my $title = $ref ? qq| title="$ref"| : '';
29                  if ( ref($data) eq 'ARRAY' ) {  
30                          $out .= "<li>$key</li>" if $key;          $out .= qq|<li${title}>|;
31                          $out .= qq|<ol${title}>\n|;          my $mark = $key || '&diams;';
32                          $out .= unroll($_,ref($_)) foreach @$data;          $out .= $ref && $ref !~ m{^(ARRAY|HASH)$} ? qq|<a href="/$ref" class="blessed" target="blessed" title="$ref">$mark</a>| : ( $key || '' );
33                          $out .= "</ol>\n";  
34                  } elsif ( ref($data) ) {          if ( ref($data) eq 'ARRAY' ) {
35                          $out .= "<li>$key</li>" if $key;                  $out .= " &darr;</li>" if $key;
36                          $out .= qq|<ul${title}>\n|;                  $out .= qq|<ol${title} start=0>\n|;
37                          $out .= unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;                  $out .= $self->unroll($_,ref($_)) foreach @$data;
38                          $out .= "</ul>\n";                  $out .= "</ol>\n";
39            } elsif ( ref($data) && eval { %$data } ) {
40                    $out .= " &darr;</li>" if $key;
41                    $out .= qq|<ul${title}>\n|;
42                    $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;
43                    $out .= "</ul>\n";
44            } else {
45                    $out .= " &rarr; " if $key;
46                    if ( defined $data && $data =~ m{<(\w+).*>.+</\1>} ) {
47                            $out .= qq|<div style="background: #eee; color: #000" title="HTML">$data</div></li>|;
48                  } else {                  } else {
49                          $out .= qq|<li${title}>|;                          $out .= "<span>" . $self->html_dump( $data ) . "</span></li>";
                         $out .= "$key &rarr; " if $key;  
                         $out .= dump( $data ) . "</li>";  
50                  }                  }
                 return $out;  
51          }          }
52            $out .= "</li>";
53    
54          unroll( $self->data );          return $out;
55  }  }
56    
57  1;  1;

Legend:
Removed from v.325  
changed lines
  Added in v.455

  ViewVC Help
Powered by ViewVC 1.1.26