Merged 5.49_01 (r1339) from refactored branch to trunk
[catagits/Catalyst-Runtime.git] / t / live / lib / TestApp / View / Dump.pm
1 package TestApp::View::Dump;
2
3 use strict;
4 use base 'Catalyst::Base';
5
6 use Data::Dumper ();
7
8 sub dump {
9     my ( $self, $reference ) = @_;
10
11     return unless $reference;
12
13     my $dumper = Data::Dumper->new( [$reference] );
14     $dumper->Indent(1);
15     $dumper->Purity(1);
16     $dumper->Useqq(0);
17     $dumper->Deepcopy(1);
18     $dumper->Quotekeys(0);
19     $dumper->Terse(1);
20
21     return $dumper->Dump;
22 }
23
24 sub process {
25     my ( $self, $c, $reference ) = @_;
26
27     # Force processing of on-demand data
28     $c->prepare_body;
29
30     # Remove context from reference if needed
31     my $context = delete $reference->{_context};
32
33     # Remove body from reference if needed
34     my $body = delete $reference->{_body};
35
36     if ( my $output =
37         $self->dump( $reference || $c->stash->{dump} || $c->stash ) )
38     {
39
40         $c->res->headers->content_type('text/plain');
41         $c->res->output($output);
42
43         # Repair context
44         $reference->{_context} = $context;
45
46         # Repair body
47         $reference->{_body} = $body;
48
49         return 1;
50     }
51
52     return 0;
53 }
54
55 1;