File Coverage

lib/DR/Tnt/Msgpack/Types/Blob.pm
Criterion Covered Total %
statement 24 24 100.0
branch 7 8 87.5
condition 1 3 33.3
subroutine 7 7 100.0
pod 0 3 0.0
total 39 45 86.6


line stmt bran cond sub pod time code
1 11     11   79 use utf8;
  11         28  
  11         62  
2 11     11   367 use strict;
  11         23  
  11         268  
3 11     11   61 use warnings;
  11         23  
  11         442  
4              
5             package DR::Tnt::Msgpack::Types::Blob;
6 11     11   69 use Carp;
  11         23  
  11         3338  
7             $Carp::Internal{ (__PACKAGE__) }++;
8              
9             sub new {
10 13     13 0 36 my ($class, $v) = @_;
11 13   33     96 bless \$v => ref($class) || $class;
12             }
13              
14             sub TO_MSGPACK {
15 10     10 0 22 my ($self) = @_;
16 10         49 my $v = $$self;
17              
18 10 50       28 return pack 'C', 0xC0 unless defined $v;
19              
20 10 100       30 utf8::encode $v if utf8::is_utf8 $v;
21 10         18 my $len = length $v;
22              
23 10 100       88 return pack 'CC/a*', 0xC4, $v if $len <= 0xFF;
24 2 100       24 return pack 'CS>/a*', 0xC5, $v if $len <= 0xFFFF;
25 1         976 return pack 'CL>/a*', 0xC6, $v;
26             }
27              
28             sub TO_JSON {
29 1     1 0 4 my ($self) = @_;
30 1         5 return $$self;
31             }
32              
33             =head1 NAME
34              
35             DR::Tnt::Msgpack::Types::Blob - container for blob.
36              
37             =head1 SYNOPSIS
38              
39             use DR::Tnt::Msgpack::Types::Blob;
40              
41             my $o = DR::Tnt::Msgpack::Types::Blob->new(123);
42             my $blob = msgpack($o);
43              
44             =head1 DESCRIPTION
45              
46             See L.
47              
48             =cut
49              
50             1;
51