Commit e5b86037 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

[Fix] détection des noms de feuilles dans les références aux cellules d'autres...

[Fix] détection des noms de feuilles dans les références aux cellules d'autres pages de feuilles de calcul
parent 5760b0b0
Loading
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
CHANGELOG
=========

6.0.7 (24/05/2024)
------------------

- [Fix] détection des noms de feuilles dans les références aux cellules d'autres pages de feuilles de calcul

6.0.6
------------------

+0 −1
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@

namespace Unicaen\OpenDocument;

use Unicaen\OpenDocument\Calc\Formule;
use Unicaen\OpenDocument\Calc\Sheet;

class Calc
+26 −9
Original line number Diff line number Diff line
@@ -182,18 +182,19 @@ class Formule
            $length++;
        } while ($t['type'] === null && $t['v'] !== ']');


        if ($val[0] !== '.') {
            return;
        }

        $val = substr($val, 1);

        if (false !== strpos($val, ':')) {
            $range = explode(':', $val);
            $begin = $range[0];
            [$sheet, $begin] = explode('.', $range[0]);
            $end = substr($range[1], 1);

            if (str_starts_with($sheet, '$')){
                $sheet = substr($sheet,1);
            }

            if (str_starts_with($sheet, "'")){
                $sheet = substr($sheet,1,-1);
            }

            $cBegin = Calc::cellNameToCoords($begin);
            $cEnd = Calc::cellNameToCoords($end);

@@ -208,11 +209,27 @@ class Formule
                'colEnd'        => $cEnd['col'],
                'colNamedEnd'   => Calc::numberToLetter($cEnd['col']),
            ];
            if ($sheet){
                $term['sheet'] = $sheet;
            }
        } else {
            [$sheet, $name] = explode('.', $val);

            if (str_starts_with($sheet, '$')){
                $sheet = substr($sheet,1);
            }

            if (str_starts_with($sheet, "'")){
                $sheet = substr($sheet,1,-1);
            }

            $term = [
                'type' => 'cell',
                'name' => $val,
                'name' => $name,
            ];
            if ($sheet){
                $term['sheet'] = $sheet;
            }
        }

        $this->tw($term, $i, $length);