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

trunk/lib/Frey/Dumper.pm revision 329 by dpavlin, Thu Nov 6 21:32:10 2008 UTC trunk/lib/Frey/View/Dumper.pm revision 563 by dpavlin, Thu Nov 27 21:29:36 2008 UTC
# Line 1  Line 1 
1  package Frey::Dumper;  package Frey::View::Dumper;
2  use Moose;  use Moose;
3    
4  with 'Frey::Escape';  extends 'Frey';
5    with 'Frey::Web';
6    
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
8    use POSIX qw/strftime/;
9    use DateTime;
10    
11  =head1 NAME  =head1 DESCRIPTION
12    
13  Frey::Dumper - dump perl data as tree  dump C<data> as html tree
14    
15  =cut  =cut
16    
17  has data => (  has data => (
18          is => 'rw',          is => 'rw',
19          required => 1,          required => 1,
20            documentation => "input data",
21  );  );
22    
23  sub markup {  sub as_markup {
24          my ($self) = @_;          my ($self) = @_;
25          qq|<div class="frey-dumper">| . $self->unroll( $self->data ) . qq|</div>|;          qq|<div class="frey-dumper">| . $self->unroll( $self->data ) . qq|</div>|;
26  }  }
# Line 25  sub unroll { Line 29  sub unroll {
29          my ($self,$data,$ref,$key) = @_;          my ($self,$data,$ref,$key) = @_;
30          my $out;          my $out;
31          my $title = $ref ? qq| title="$ref"| : '';          my $title = $ref ? qq| title="$ref"| : '';
32    
33            $out .= qq|<li${title}>|;
34            my $mark = $key || '&diams;';
35            $out .= $ref && $ref !~ m{^(ARRAY|HASH)$} ? qq|<a href="/$ref" class="blessed" target="blessed" title="$ref">$mark</a>| : ( $key || '' );
36    
37          if ( ref($data) eq 'ARRAY' ) {          if ( ref($data) eq 'ARRAY' ) {
38                  $out .= "<li>$key &darr;</li>" if $key;                  $out .= " &darr;</li>" if $key;
39                  $out .= qq|<ol${title} start=0>\n|;                  $out .= qq|<ol${title} start=0>\n|;
40                  $out .= $self->unroll($_,ref($_)) foreach @$data;                  $out .= $self->unroll($_,ref($_)) foreach @$data;
41                  $out .= "</ol>\n";                  $out .= "</ol>\n";
42          } elsif ( ref($data) ) {          } elsif ( ref($data) && eval { %$data } ) {
43                  $out .= "<li>$key &darr;</li>" if $key;                  $out .= " &darr;</li>" if $key;
44                  $out .= qq|<ul${title}>\n|;                  $out .= qq|<ul${title}>\n|;
45                  $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;                  $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data;
46                  $out .= "</ul>\n";                  $out .= "</ul>\n";
47          } else {          } else {
48                  $out .= qq|<li${title}>|;                  $out .= " &rarr; " if $key;
49                  $out .= "$key &rarr; " if $key;                  if ( defined $data && $data =~ m{<(\w+).*>.+</\1>} ) {
50                  $out .= "<span>" . $self->html_dump( $data ) . "</span></li>";                          $out .= qq|<div style="background: #eee; color: #000" title="HTML">$data</div></li>|;
51                    } elsif ( $data =~ m{^(\d+(?:\.\d+)?)$} && $1 <= time() ) {
52                            $out .= qq|<span title="| . DateTime->from_epoch( epoch => $1 ) . qq|">$data</span>|;
53                    } else {
54                            $out .= "<span>" . $self->html_dump( $data ) . "</span></li>";
55                    }
56          }          }
57            $out .= "</li>";
58    
59          return $out;          return $out;
60  }  }
61    

Legend:
Removed from v.329  
changed lines
  Added in v.563

  ViewVC Help
Powered by ViewVC 1.1.26