File Coverage

blib/lib/EBook/EPUB/Lite/Spine.pm
Criterion Covered Total %
statement 19 21 90.4
branch 1 2 50.0
condition n/a
subroutine 5 6 83.3
pod 2 3 66.6
total 27 32 84.3


line stmt bran cond sub pod time code
1             # Copyright (c) 2009, 2010 Oleksandr Tymoshenko
2             # All rights reserved.
3              
4             # Redistribution and use in source and binary forms, with or without
5             # modification, are permitted provided that the following conditions
6             # are met:
7             # 1. Redistributions of source code must retain the above copyright
8             # notice, this list of conditions and the following disclaimer.
9             # 2. Redistributions in binary form must reproduce the above copyright
10             # notice, this list of conditions and the following disclaimer in the
11             # documentation and/or other materials provided with the distribution.
12              
13             # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14             # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15             # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16             # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17             # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18             # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19             # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20             # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21             # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22             # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23             # SUCH DAMAGE.
24             package EBook::EPUB::Lite::Spine;
25              
26 4     4   17 use Moo;
  4         6  
  4         24  
27 4     4   1003 use Types::Standard qw/ArrayRef Object Str/;
  4         4  
  4         32  
28              
29 4     4   3800 use EBook::EPUB::Lite::Spine::Itemref;
  4         8  
  4         994  
30              
31             has toc => ( isa => Str, is => 'rw' );
32              
33             has page_progression_direction => (
34             isa => Str,
35             is => "rw"
36             );
37              
38             has itemrefs => (
39             is => 'ro',
40             isa => ArrayRef[Object],
41             default => sub { [] },
42             );
43              
44             sub all_itemrefs {
45 0     0 0 0 return @{ shift->itemrefs };
  0         0  
46             }
47              
48              
49             sub encode
50             {
51 2     2 1 3 my ($self, $writer) = @_;
52 2 50       45 $writer->startTag("spine",
53             toc => $self->toc,
54             $self->page_progression_direction ? ( "page-progression-direction" => $self->page_progression_direction ) : (),
55             );
56              
57 2         1122 foreach my $itemref (@{$self->itemrefs()}) {
  2         11  
58 4         614 $itemref->encode($writer);
59             }
60              
61 2         620 $writer->endTag("spine");
62             }
63              
64             sub add_itemref
65             {
66 4     4 1 8 my ($self, @args) = @_;
67 4         61 my $itemref = EBook::EPUB::Lite::Spine::Itemref->new(@args);
68 4         3636 push @{$self->itemrefs()}, $itemref;
  4         19  
69             }
70              
71             1;
72              
73             __END__