EPUB-Parser
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/EPUB/Parser/Util/Archive.pm view on Meta::CPAN
package EPUB::Parser::Util::Archive;
use strict;
use warnings;
use Carp;
use Smart::Args;
use Archive::Zip qw( AZ_OK );
sub new {
args(
my $class => 'ClassName',
my $data => { isa => 'Archive::Zip' },
);
bless { data => $data } => $class;
}
sub get_member_data {
args(
my $self => 'Object',
my $file_path => 'Str',
);
my $member = $self->{data}->memberNamed($file_path);
croak "$file_path not found" unless ($member);
my ( $member_data, $AZ_status ) = $member->contents();
croak "$file_path: error Archive::Zip status = $AZ_status" if ($AZ_status != AZ_OK);
return $member_data;
}
sub get_members {
my $self = shift;
my $args = shift || {};
$args->{zip} = $self;
EPUB::Parser::Util::Archive::Iterator->new($args);
}
package EPUB::Parser::Util::Archive::Iterator;
use strict;
use warnings;
use Carp;
use Smart::Args;
use Archive::Zip qw( AZ_OK );
sub new {
args(
my $class => 'ClassName',
my $zip => { isa => 'EPUB::Parser::Util::Archive'},
my $files_path => 'ArrayRef[Str]',
);
bless {
zip => $zip,
files_path => $files_path,
current_index => -1,
current_member => undef,
} => $class;
}
sub size {
my $self = shift;
scalar @{$self->{files_path}};
}
sub current_file_path {
my $self = shift;
$self->{files_path}->[$self->{current_index}];
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.426 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )