File Coverage

/root/.cpan/build/Riji-v1.1.4-0/lib/Riji/Model/Tag.pm
Criterion Covered Total %
statement 25 25 100.0
branch 2 2 100.0
condition n/a
subroutine 8 8 100.0
pod 0 1 0.0
total 35 36 97.2


line stmt bran cond sub pod time code
1             package Riji::Model::Tag;
2 9     9   65 use feature ':5.10';
  9         18  
  9         2119  
3 9     9   69 use strict;
  9         18  
  9         404  
4 9     9   66 use warnings;
  9         21  
  9         627  
5              
6 9     9   66 use Encode;
  9         19  
  9         1916  
7 9     9   5309 use MIME::Base32 1.301 ();
  9         13113  
  9         340  
8              
9 9     9   61 use Mouse;
  9         14  
  9         68  
10              
11             has name => (
12             is => 'ro',
13             isa => 'Str',
14             required => 1,
15             );
16              
17             has entries => (
18             is => 'rw',
19             isa => 'ArrayRef[Riji::Model::Entry]',
20             lazy => 1,
21             default => sub { [] },
22             );
23              
24             has count => (
25             is => 'ro',
26             lazy => 1,
27             default => sub {
28             scalar @{ shift->entries };
29             },
30             );
31              
32             has _encoded_name => (
33             is => 'ro',
34             default => sub {
35             my $name = shift->name;
36             return $name unless $name =~ /[^-_a-zA-Z0-9]/ms;
37              
38             'b32.'.MIME::Base32::encode_rfc3548(encode_utf8 $name);
39             }
40             );
41              
42             has site_path => (
43             is => 'ro',
44             default => sub { '/tag/' . shift->_encoded_name . '.html' },
45             );
46              
47 9     9   6703 no Mouse;
  9         21  
  9         52  
48              
49             sub normalize_tag {
50 8     8 0 17 my ($class, $tag) = @_;
51              
52 8 100       47 if ($tag =~ s/^b32\.//) {
53 1         19 return decode_utf8 MIME::Base32::decode_rfc3548($tag);
54             }
55 7         21 $tag;
56             }
57              
58             1;