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