From 4e4d2ae08c38dd425145b2401509b9232837185e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 10 May 2013 11:14:39 -0500 Subject: this shouldn't be object state --- lib/Spreadsheet/ParseXLSX.pm | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'lib/Spreadsheet/ParseXLSX.pm') diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index 89e0ab9..3231be8 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -14,55 +14,61 @@ sub parse { my $self = shift; my ($filename) = @_; - $self->{Zip} = Archive::Zip->new; + my $zip = Archive::Zip->new; die "Can't open $filename as zip file" - unless $self->{Zip}->read($filename) == Archive::Zip::AZ_OK; + unless $zip->read($filename) == Archive::Zip::AZ_OK; - $self->{Workbook} = $self->_parse_workbook; + return $self->_parse_workbook($zip); } sub _parse_workbook { my $self = shift; + my ($zip) = @_; - my $files = $self->_extract_files; + my $files = $self->_extract_files($zip); # ... } sub _extract_files { my $self = shift; + my ($zip) = @_; my $type_base = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'; my $rels = $self->_parse_xml( + $zip, $self->_rels_for('') ); my $wb_name = ($rels->find_nodes( qq ))[0]->att('Target'); - my $wb_xml = $self->_parse_xml($wb_name); + my $wb_xml = $self->_parse_xml($zip, $wb_name); my $path_base = $self->_base_path_for($wb_name); my $wb_rels = $self->_parse_xml( + $zip, $self->_rels_for($wb_name) ); my $strings_xml = $self->_parse_xml( + $zip, $path_base . ($wb_rels->find_nodes( qq ))[0]->att('Target') ); my $styles_xml = $self->_parse_xml( + $zip, $path_base . ($wb_rels->find_nodes( qq ))[0]->att('Target') ); my @worksheet_xml = map { - $self->_parse_xml($path_base . $_->att('Target')) + $self->_parse_xml($zip, $path_base . $_->att('Target')) } $wb_rels->find_nodes(qq); my @themes_xml = map { - $self->_parse_xml($path_base . $_->att('Target')) + $self->_parse_xml($zip, $path_base . $_->att('Target')) } $wb_rels->find_nodes(qq); return { @@ -76,9 +82,9 @@ sub _extract_files { sub _parse_xml { my $self = shift; - my ($subfile) = @_; + my ($zip, $subfile) = @_; - my $member = $self->{Zip}->memberNamed($subfile); + my $member = $zip->memberNamed($subfile); die "no subfile named $subfile" unless $member; my $xml = XML::Twig->new; -- cgit v1.2.3-54-g00ecf