File Coverage

blib/lib/Dancer2/Session/DBIC/Serializer/JSON.pm
Criterion Covered Total %
statement 13 13 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 2 2 100.0
total 22 22 100.0


line stmt bran cond sub pod time code
1             package Dancer2::Session::DBIC::Serializer::JSON;
2              
3             =head1 NAME
4              
5             Dancer2::Session::DBIC::Serializer::JSON
6              
7             =head1 DESCRIPTION
8              
9             Use L<JSON::MaybeXS> serialization for session storage.
10              
11             =cut
12              
13 2     2   36765 use JSON::MaybeXS;
  2         4810  
  2         95  
14 2     2   415 use Moo;
  2         8575  
  2         14  
15             with 'Dancer2::Session::DBIC::Role::Serializer';
16 2     2   1586 use namespace::clean;
  2         6496  
  2         12  
17              
18             =head1 ATTRIBUTES
19              
20             See L<Dancer2::Session::DBIC::Role::Serializer> for inherited attributes.
21              
22             =head2 serialize_options
23              
24             Override default with the following options:
25              
26             =over
27              
28             =item pretty => 0
29              
30             =item convert_blessed => 1
31              
32             =back
33              
34             =cut
35              
36             has '+serialize_options' => (
37             default => sub {
38             { pretty => 0, convert_blessed => 1 };
39             },
40             );
41              
42             =head1 METHODS
43              
44             =head2 serialize $perl_objects
45              
46             Serialize C<$perl_objects> to JSON.
47              
48             =cut
49              
50             sub serialize {
51 22     22 1 4408 shift->serializer->encode(shift);
52             }
53              
54             sub _build_serializer {
55 6     6   1040 JSON::MaybeXS->new( shift->serialize_options );
56             }
57              
58             =head2 deserialize $json
59              
60             Deserialize C<$json> to Perl objects.
61              
62             =cut
63              
64             sub deserialize {
65 41     41 1 1404 shift->deserializer->decode(shift);
66             }
67              
68             sub _build_deserializer {
69 5     5   1151 JSON::MaybeXS->new( shift->deserialize_options );
70             }
71              
72             1;