From c7c05c53a31b100a065502a9dbb65a1502a14bf9 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 22 May 2016 20:44:42 -0400 Subject: allow for non-case-sensitive zip file entries (???) (Tux, #57) --- lib/Spreadsheet/ParseXLSX.pm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index fda4742..c9ad9a5 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -835,7 +835,7 @@ sub _extract_files { }; my ($strings_xml) = map { - $zip->memberNamed($get_path->($_->att('Target')))->contents + $self->_zip_file_member($zip, $get_path->($_->att('Target'))) } $wb_rels->find_nodes(qq); my ($styles_xml) = map { @@ -846,9 +846,7 @@ sub _extract_files { } $wb_rels->find_nodes(qq); my %worksheet_xml = map { - if ( my $sheetfile = $zip->memberNamed($get_path->($_->att('Target')))->contents ) { - ( $_->att('Id') => $sheetfile ); - } + ($_->att('Id') => $self->_zip_file_member($zip, $get_path->($_->att('Target')))) } $wb_rels->find_nodes(qq); my %themes_xml = map { @@ -872,15 +870,22 @@ sub _parse_xml { my $self = shift; my ($zip, $subfile, $map_xmlns) = @_; - my $member = $zip->memberNamed($subfile); - die "no subfile named $subfile" unless $member; - my $xml = $self->_new_twig; - $xml->parse(scalar $member->contents); + $xml->parse($self->_zip_file_member($zip, $subfile)); return $xml; } +sub _zip_file_member { + my $self = shift; + my ($zip, $name) = @_; + + my @members = $zip->membersMatching(qr/^$name$/i); + die "no subfile named $name" unless @members; + + return scalar $members[0]->contents; +} + sub _rels_for { my $self = shift; my ($file) = @_; -- cgit v1.2.3-54-g00ecf