/usr/local/CPAN/Template-Like/Template/Like/Plugin/Dumper.pm


package Template::Like::Plugin::Dumper;

use strict;
use Data::Dumper;

#=====================================================================
# new
#---------------------------------------------------------------------
# - API
# <% USE Dumper %>
# <% Dumper.dump(variable) %>
#---------------------------------------------------------------------
# - args
# $params ... PARAMS ( HASHREF )
#---------------------------------------------------------------------
# - returns
# Template::Like::Plugin::Dumper Object.
#---------------------------------------------------------------------
# - Example
# <% USE Dumper(indent=4) %>
# <% Dumper.dump(variable) %>
#=====================================================================
sub new {
  my $class   = shift;
  my $context = shift;
  my $params  = ref $_[0] ? $_[0] : {@_};
  
  my $dumper = Data::Dumper->new([]);
  
  for my $key ( keys %{ $params } ) {
    my $method = ucfirst( $key );
    if ($dumper->can($method)) {
      $dumper->$method( $params->{ $key } );
    }
  }
  
  return bless { _CONTEXT => $context, dumper => $dumper }, $class;
}



#=====================================================================
# dump
#---------------------------------------------------------------------
# - API
# 
#---------------------------------------------------------------------
# - args
# 
#---------------------------------------------------------------------
# - returns
# 
#---------------------------------------------------------------------
# - Example
# <% Dumper.dump(variable) %>
#=====================================================================
sub dump {
  my $self = shift;
  
  $self->dumper->Reset;
  $self->dumper->Values(\@_);
  
  my $data = $self->dumper->Dump(@_);
  
  return $data;
}

#=====================================================================
# dump_html
#---------------------------------------------------------------------
# - API
# 
#---------------------------------------------------------------------
# - args
# 
#---------------------------------------------------------------------
# - returns
# 
#---------------------------------------------------------------------
# - Example
# <% Dumper.dump_html(variable) %>
#=====================================================================
sub dump_html {
  my $self = shift;
  
  my $data = $self->dump(@_);
  
  return $self->{'_CONTEXT'}->filter('html_line_break',
    $self->{'_CONTEXT'}->filter('html', $data)
  );
}

#=====================================================================
# Data::Dumper Object
#=====================================================================
sub dumper { shift->{'dumper'} }

1;