From 39d4f196204cd8db8f462cd5405f811505f561c0 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 15 Mar 2015 00:58:54 -0400 Subject: handle other valid booleans for diagonalDown and diagonalUp the spec allows for 1/0/true/false, so need to make sure they're all handled --- lib/Spreadsheet/ParseXLSX.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index ac33514..619ba3c 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -493,6 +493,12 @@ sub _parse_styles { my @borders = map { my $border = $_; + my ($ddiag, $udiag) = map { + my $v = $border->att($_) // 0; + $v = 1 if $v eq 'true'; + $v = 0 if $v eq 'false'; + $v + } qw(diagonalDown diagonalUp); # XXX specs say "begin" and "end" rather than "left" and "right", # but... that's not what seems to be in the file itself (sigh) { @@ -510,8 +516,11 @@ sub _parse_styles { } qw(left right top bottom) ], diagonal => [ - ($border->att('diagonalDown') // 0) * 2 + ($border->att('diagonalUp') // 0), - $border{ $border->first_child('diagonal')->att('style') || 'none' }, + ( $ddiag && $udiag ? 3 + : $ddiag && !$udiag ? 2 + : !$ddiag && $udiag ? 1 + : 0), + $border{$border->first_child('diagonal')->att('style') || 'none'}, $self->_color( $workbook->{Color}, $border->first_child('diagonal')->first_child('color') -- cgit v1.2.3-54-g00ecf