--- trunk/lib/Frey/Dumper.pm 2008/11/16 15:19:54 355 +++ trunk/lib/Frey/Dumper.pm 2008/11/19 15:28:23 455 @@ -1,6 +1,7 @@ package Frey::Dumper; use Moose; +with 'Frey::Web'; with 'Frey::Escape'; use Data::Dump qw/dump/; @@ -16,7 +17,7 @@ required => 1, ); -sub markup { +sub as_markup { my ($self) = @_; qq|
| . $self->unroll( $self->data ) . qq|
|; } @@ -25,25 +26,31 @@ my ($self,$data,$ref,$key) = @_; my $out; my $title = $ref ? qq| title="$ref"| : ''; + + $out .= qq||; + my $mark = $key || '♦'; + $out .= $ref && $ref !~ m{^(ARRAY|HASH)$} ? qq|$mark| : ( $key || '' ); + if ( ref($data) eq 'ARRAY' ) { - $out .= "
  • $key ↓
  • " if $key; + $out .= " ↓" if $key; $out .= qq|\n|; $out .= $self->unroll($_,ref($_)) foreach @$data; $out .= "\n"; - } elsif ( ref($data) eq 'HASH' ) { - $out .= "
  • $key ↓
  • " if $key; + } elsif ( ref($data) && eval { %$data } ) { + $out .= " ↓" if $key; $out .= qq|\n|; $out .= $self->unroll($data->{$_},ref($data->{$_}),$_) foreach keys %$data; $out .= "\n"; } else { - $out .= qq||; - $out .= "$key → " if $key; - if ( $data =~ m{<(\w+)>.+} ) { - $out .= qq|
    $data
    |; + $out .= " → " if $key; + if ( defined $data && $data =~ m{<(\w+).*>.+} ) { + $out .= qq|
    $data
    |; } else { $out .= "" . $self->html_dump( $data ) . ""; } } + $out .= ""; + return $out; }