fixing to work with perl 5.8
[catagits/Catalyst-Runtime.git] / t / lib / TestApp / View / Dump.pm
CommitLineData
fbcc39ad 1package TestApp::View::Dump;
2
3use strict;
ae0e35ee 4use base 'Catalyst::View';
fbcc39ad 5
6use Data::Dumper ();
610bc6ec 7use Scalar::Util qw(blessed weaken);
fbcc39ad 8
9sub dump {
9310b818 10 my ( $self, $reference, $purity ) = @_;
fbcc39ad 11
12 return unless $reference;
13
6721fe5a 14 $purity = defined $purity ? $purity : 1;
9310b818 15
fbcc39ad 16 my $dumper = Data::Dumper->new( [$reference] );
17 $dumper->Indent(1);
9310b818 18 $dumper->Purity($purity);
fbcc39ad 19 $dumper->Useqq(0);
20 $dumper->Deepcopy(1);
21 $dumper->Quotekeys(0);
22 $dumper->Terse(1);
23
24 return $dumper->Dump;
25}
26
27sub process {
9310b818 28 my ( $self, $c, $reference, $purity ) = @_;
fbcc39ad 29
30 # Force processing of on-demand data
31 $c->prepare_body;
32
fbcc39ad 33 # Remove body from reference if needed
610bc6ec 34 $reference->{__body_type} = blessed $reference->body
35 if (blessed $reference->{_body});
fbcc39ad 36 my $body = delete $reference->{_body};
37
610bc6ec 38 # Remove context from reference if needed
39 my $context = delete $reference->{_context};
40
fbcc39ad 41 if ( my $output =
9310b818 42 $self->dump( $reference, $purity ) )
fbcc39ad 43 {
44
45 $c->res->headers->content_type('text/plain');
46 $c->res->output($output);
47
c3fd63d4 48 if ($context) {
49 # Repair context
50 $reference->{_context} = $context;
51 weaken( $reference->{_context} );
52 }
53
54 if ($body) {
55 # Repair body
56 delete $reference->{__body_type};
57 $reference->{_body} = $body;
58 }
fbcc39ad 59
60 return 1;
61 }
62
63 return 0;
64}
65
661;