Suppressing Data::Dumper warnings in test t/aggregate/live_component_controller_actio...
[catagits/Catalyst-Runtime.git] / t / lib / TestApp / View / Dump.pm
1 package TestApp::View::Dump;
2
3 use strict;
4 use base 'Catalyst::View';
5
6 use Data::Dumper ();
7 use Scalar::Util qw(blessed weaken);
8
9 sub dump {
10     my ( $self, $reference, $purity ) = @_;
11
12     return unless $reference;
13
14     $purity = $purity // 1;
15
16     my $dumper = Data::Dumper->new( [$reference] );
17     $dumper->Indent(1);
18     $dumper->Purity($purity);
19     $dumper->Useqq(0);
20     $dumper->Deepcopy(1);
21     $dumper->Quotekeys(0);
22     $dumper->Terse(1);
23
24     return $dumper->Dump;
25 }
26
27 sub process {
28     my ( $self, $c, $reference, $purity ) = @_;
29
30     # Force processing of on-demand data
31     $c->prepare_body;
32
33     # Remove body from reference if needed
34     $reference->{__body_type} = blessed $reference->body
35         if (blessed $reference->{_body});
36     my $body = delete $reference->{_body};
37
38     # Remove context from reference if needed
39     my $context = delete $reference->{_context};
40
41     if ( my $output =
42         $self->dump( $reference, $purity ) )
43     {
44
45         $c->res->headers->content_type('text/plain');
46         $c->res->output($output);
47
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         }
59
60         return 1;
61     }
62
63     return 0;
64 }
65
66 1;