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 { |
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 | |
27 | sub 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 | |
66 | 1; |