File Coverage

blib/lib/EBook/EPUB/Lite/NCX/NavPoint.pm
Criterion Covered Total %
statement 23 26 88.4
branch 1 2 50.0
condition n/a
subroutine 4 5 80.0
pod 3 3 100.0
total 31 36 86.1


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::NCX::NavPoint;
25              
26 4     4   17 use Moo;
  4         7  
  4         21  
27 4     4   832 use Types::Standard qw/Str ArrayRef Object Int/;
  4         7  
  4         24  
28              
29             has label => ( isa => Str, is => 'rw' );
30             has id => ( isa => Str, is => 'rw' );
31             has content => ( isa => Str, is => 'rw' );
32             has class => ( isa => Str, is => 'rw' );
33             has play_order => ( isa => Int, is => 'rw' );
34             has navpoints => (
35             is => 'ro',
36             isa => ArrayRef[Object],
37             default => sub { [] },
38             );
39              
40             sub all_navpoints {
41 0     0 1 0 return @{ shift->navpoints };
  0         0  
42             }
43              
44              
45              
46             sub encode
47             {
48 3     3 1 7 my ($self, $writer) = @_;
49 3         62 my @args = (
50             id => $self->id,
51             playOrder => $self->play_order);
52 3 50       1861 if (defined($self->class)) {
53 0         0 push @args, 'class', $self->class;
54             }
55              
56 3         774 $writer->startTag('navPoint', @args);
57 3         375 $writer->startTag('navLabel');
58 3         184 $writer->dataElement('text', $self->label);
59 3         1034 $writer->endTag('navLabel');
60 3         129 $writer->emptyTag('content',
61             src => $self->content,
62             );
63              
64             # subpoints
65 3         955 foreach my $point (@{$self->navpoints}) {
  3         17  
66 2         12 $point->encode($writer);
67             }
68              
69 3         65 $writer->endTag('navPoint');
70             }
71              
72             sub add_navpoint
73             {
74 2     2 1 15 my ($self, @args) = @_;
75 2         39 my $subpoint = EBook::EPUB::Lite::NCX::NavPoint->new(@args);
76 2         69 push @{$self->navpoints}, $subpoint;
  2         7  
77              
78 2         7 return $subpoint;
79             }
80              
81             1;
82              
83             __END__