File Coverage

blib/lib/EBook/EPUB/Manifest.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             # Copyright (c) 2009, 2010 Oleksandr Tymoshenko <gonzo@bluezbox.com>
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::Manifest;
25 1     1   2380 use Moose;
  0            
  0            
26             use EBook::EPUB::Manifest::Item;
27              
28             has items => (
29             traits => ['Array'],
30             is => 'ro',
31             isa => 'ArrayRef[Object]',
32             default => sub { [] },
33             handles => {
34             all_items => 'elements',
35             },
36             );
37              
38             sub encode
39             {
40             my ($self, $writer) = @_;
41             $writer->startTag("manifest");
42             foreach my $item (@{$self->items()}) {
43             $item->encode($writer);
44             }
45             $writer->endTag("manifest");
46             }
47              
48             sub add_item
49             {
50             my ($self, @args) = @_;
51             my $item = EBook::EPUB::Manifest::Item->new(@args);
52             push @{$self->items()}, $item;
53             }
54              
55             no Moose;
56             __PACKAGE__->meta->make_immutable;
57              
58             1;
59              
60             __END__
61              
62             =head1 NAME
63              
64             EBook::EPUB::Manifest
65              
66             =head1 SYNOPSIS
67              
68             Class that represents B<manifest> element of OPF document
69              
70              
71             =head1 DESCRIPTION
72              
73             The required B<manifest> provides a list of all the files that are part of
74             the publication (e.g. Content Documents, style sheets, image files, any
75             embedded font files, any included schemas).
76              
77             =head1 SUBROUTINES/METHODS
78              
79             =over 4
80              
81             =item add_item(%opts)
82              
83             Add refrence to an OPS Content Document that is a part of publication. %opts is
84             an anonymous hash, for possible key values see L<EBook::EPUB::Manifest::Item>
85              
86             =item all_items()
87              
88             Returns array of EBook::EPUB::Manifest::Item objects, current content of B<manifest> element
89              
90             =item encode($xmlwriter)
91              
92             Encode object to XML form using XML::Writer instance
93              
94             =item new()
95              
96             Create new object
97              
98             =back
99              
100             =head1 AUTHOR
101              
102             Oleksandr Tymoshenko, E<lt>gonzo@bluezbox.comE<gt>
103              
104             =head1 BUGS
105              
106             Please report any bugs or feature requests to E<lt>gonzo@bluezbox.comE<gt>
107              
108             =head1 LICENSE AND COPYRIGHT
109              
110             Copyright 2009, 2010 Oleksandr Tymoshenko.
111              
112             L<http://bluezbox.com>
113              
114             This module is free software; you can redistribute it and/or
115             modify it under the terms of the BSD license. See the F<LICENSE> file
116             included with this distribution.