diff options
author | Jesse Luehrs <doy@tozt.net> | 2016-05-22 20:44:42 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2016-05-22 20:45:26 -0400 |
commit | c7c05c53a31b100a065502a9dbb65a1502a14bf9 (patch) | |
tree | 9b36074c4c7404b501ff178f979ec040d9d40593 /lib/Spreadsheet | |
parent | 6d49e45380bbcd75f7621ab1690bd9652e3d414d (diff) | |
download | spreadsheet-parsexlsx-c7c05c53a31b100a065502a9dbb65a1502a14bf9.tar.gz spreadsheet-parsexlsx-c7c05c53a31b100a065502a9dbb65a1502a14bf9.zip |
allow for non-case-sensitive zip file entries (???) (Tux, #57)
Diffstat (limited to 'lib/Spreadsheet')
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 21 |
1 files changed, 13 insertions, 8 deletions
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<//packagerels:Relationship[\@Type="$type_base/sharedStrings"]>); my ($styles_xml) = map { @@ -846,9 +846,7 @@ sub _extract_files { } $wb_rels->find_nodes(qq<//packagerels:Relationship[\@Type="$type_base/styles"]>); 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<//packagerels:Relationship[\@Type="$type_base/worksheet"]>); 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) = @_; |