File Coverage

blib/lib/Raisin/Encoder.pm
Criterion Covered Total %
statement 34 34 100.0
branch n/a
condition n/a
subroutine 10 10 100.0
pod 5 6 83.3
total 49 50 98.0


line stmt bran cond sub pod time code
1             #!perl
2             #PODNAME: Raisin::Encoder
3             #ABSTRACT: A helper for L over encoder modules
4              
5 14     14   282003 use strict;
  14         42  
  14         487  
6 14     14   81 use warnings;
  14         39  
  14         673  
7              
8             package Raisin::Encoder;
9             $Raisin::Encoder::VERSION = '0.93';
10 14     14   633 use Plack::Util;
  14         13392  
  14         378  
11 14     14   532 use Plack::Util::Accessor qw(registered);
  14         304  
  14         108  
12              
13 66     66 0 55304 sub new { bless { registered => {} }, shift }
14              
15             sub register {
16 2     2 1 15 my ($self, $format, $class) = @_;
17 2         12 $self->{registered}{$format} = $class;
18             }
19              
20             sub builtin {
21             {
22 130     130 1 602 json => 'Raisin::Encoder::JSON',
23             yaml => 'Raisin::Encoder::YAML',
24             text => 'Raisin::Encoder::Text',
25             };
26             }
27              
28             sub all {
29 158     158 1 413 my $self = shift;
30             my %s = (
31 158         334 %{ $self->builtin },
32 158         212 %{ $self->registered },
  158         397  
33             );
34 158         1446 \%s;
35             }
36              
37             sub for {
38 50     50 1 304 my ($self, $format) = @_;
39 50         173 $self->all->{$format};
40             }
41              
42             sub media_types_map_flat_hash {
43 60     60 1 466 my $self = shift;
44 60         147 my $s = $self->all;
45              
46             my %media_types_map = map {
47 60         195 Plack::Util::load_class($s->{$_});
  169         500  
48 169         2346 $_ => $s->{$_}->detectable_by;
49             } keys %$s;
50              
51             my %media_types_map_flat_hash = map {
52 60         178 my $k = $_; map { $_ => $k } @{ $media_types_map{$k} }
  169         256  
  169         198  
  638         1325  
  169         279  
53             } keys %media_types_map;
54              
55 60         573 %media_types_map_flat_hash;
56             }
57              
58             1;
59              
60             __END__