Rename ManagedStyle to PossiblyUpdatedStyle and add documentation
This commit is contained in:
parent
774fb643e0
commit
1dccfb1203
@ -4,6 +4,10 @@ namespace Box\Spout\Writer\Common\Manager;
|
|||||||
|
|
||||||
use Box\Spout\Common\Entity\Style\Style;
|
use Box\Spout\Common\Entity\Style\Style;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RegisteredStyle
|
||||||
|
* Allow to know if this style must replace actual row style.
|
||||||
|
*/
|
||||||
class RegisteredStyle
|
class RegisteredStyle
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -14,12 +18,12 @@ class RegisteredStyle
|
|||||||
/**
|
/**
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
private $isRowStyle;
|
private $isMatchingRowStyle;
|
||||||
|
|
||||||
public function __construct(Style $style, bool $isRowStyle)
|
public function __construct(Style $style, bool $isMatchingRowStyle)
|
||||||
{
|
{
|
||||||
$this->style = $style;
|
$this->style = $style;
|
||||||
$this->isRowStyle = $isRowStyle;
|
$this->isMatchingRowStyle = $isMatchingRowStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStyle() : Style
|
public function getStyle() : Style
|
||||||
@ -27,8 +31,8 @@ class RegisteredStyle
|
|||||||
return $this->style;
|
return $this->style;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isRowStyle() : bool
|
public function isMatchingRowStyle() : bool
|
||||||
{
|
{
|
||||||
return $this->isRowStyle;
|
return $this->isMatchingRowStyle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,12 @@ namespace Box\Spout\Writer\Common\Manager\Style;
|
|||||||
|
|
||||||
use Box\Spout\Common\Entity\Style\Style;
|
use Box\Spout\Common\Entity\Style\Style;
|
||||||
|
|
||||||
class ManagedStyle
|
/**
|
||||||
|
* Class PossiblyUpdatedStyle
|
||||||
|
* Indicates if style is updated.
|
||||||
|
* It allow to know if style registration must be done.
|
||||||
|
*/
|
||||||
|
class PossiblyUpdatedStyle
|
||||||
{
|
{
|
||||||
private $style;
|
private $style;
|
||||||
private $isUpdated;
|
private $isUpdated;
|
@ -50,9 +50,9 @@ class StyleManager implements StyleManagerInterface
|
|||||||
* Typically, set "wrap text" if a cell contains a new line.
|
* Typically, set "wrap text" if a cell contains a new line.
|
||||||
*
|
*
|
||||||
* @param Cell $cell
|
* @param Cell $cell
|
||||||
* @return ManagedStyle The eventually updated style
|
* @return PossiblyUpdatedStyle The eventually updated style
|
||||||
*/
|
*/
|
||||||
public function applyExtraStylesIfNeeded(Cell $cell) : ManagedStyle
|
public function applyExtraStylesIfNeeded(Cell $cell) : PossiblyUpdatedStyle
|
||||||
{
|
{
|
||||||
return $this->applyWrapTextIfCellContainsNewLine($cell);
|
return $this->applyWrapTextIfCellContainsNewLine($cell);
|
||||||
}
|
}
|
||||||
@ -67,9 +67,9 @@ class StyleManager implements StyleManagerInterface
|
|||||||
* on the Windows version of Excel...
|
* on the Windows version of Excel...
|
||||||
*
|
*
|
||||||
* @param Cell $cell The cell the style should be applied to
|
* @param Cell $cell The cell the style should be applied to
|
||||||
* @return ManagedStyle The eventually updated style
|
* @return PossiblyUpdatedStyle The eventually updated style
|
||||||
*/
|
*/
|
||||||
protected function applyWrapTextIfCellContainsNewLine(Cell $cell) : ManagedStyle
|
protected function applyWrapTextIfCellContainsNewLine(Cell $cell) : PossiblyUpdatedStyle
|
||||||
{
|
{
|
||||||
$cellStyle = $cell->getStyle();
|
$cellStyle = $cell->getStyle();
|
||||||
|
|
||||||
@ -77,9 +77,9 @@ class StyleManager implements StyleManagerInterface
|
|||||||
if (!$cellStyle->hasSetWrapText() && $cell->isString() && \strpos($cell->getValue(), "\n") !== false) {
|
if (!$cellStyle->hasSetWrapText() && $cell->isString() && \strpos($cell->getValue(), "\n") !== false) {
|
||||||
$cellStyle->setShouldWrapText();
|
$cellStyle->setShouldWrapText();
|
||||||
|
|
||||||
return new ManagedStyle($cellStyle, true);
|
return new PossiblyUpdatedStyle($cellStyle, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ManagedStyle($cellStyle, false);
|
return new PossiblyUpdatedStyle($cellStyle, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ interface StyleManagerInterface
|
|||||||
* Typically, set "wrap text" if a cell contains a new line.
|
* Typically, set "wrap text" if a cell contains a new line.
|
||||||
*
|
*
|
||||||
* @param Cell $cell
|
* @param Cell $cell
|
||||||
* @return ManagedStyle The eventually updated style
|
* @return PossiblyUpdatedStyle The eventually updated style
|
||||||
*/
|
*/
|
||||||
public function applyExtraStylesIfNeeded(Cell $cell) : ManagedStyle;
|
public function applyExtraStylesIfNeeded(Cell $cell) : PossiblyUpdatedStyle;
|
||||||
}
|
}
|
||||||
|
@ -128,8 +128,8 @@ class WorksheetManager implements WorksheetManagerInterface
|
|||||||
if ($nextCell === null || $cell->getValue() !== $nextCell->getValue()) {
|
if ($nextCell === null || $cell->getValue() !== $nextCell->getValue()) {
|
||||||
$registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle);
|
$registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle);
|
||||||
$cellStyle = $registeredStyle->getStyle();
|
$cellStyle = $registeredStyle->getStyle();
|
||||||
if ($registeredStyle->isRowStyle()) {
|
if ($registeredStyle->isMatchingRowStyle()) {
|
||||||
$rowStyle = $cellStyle;
|
$rowStyle = $cellStyle; // Replace actual rowStyle (possibly with null id) by registered style (with id)
|
||||||
}
|
}
|
||||||
|
|
||||||
$data .= $this->getCellXMLWithStyle($cell, $cellStyle, $currentCellIndex, $nextCellIndex);
|
$data .= $this->getCellXMLWithStyle($cell, $cellStyle, $currentCellIndex, $nextCellIndex);
|
||||||
@ -161,25 +161,25 @@ class WorksheetManager implements WorksheetManagerInterface
|
|||||||
*/
|
*/
|
||||||
private function applyStyleAndRegister(Cell $cell, Style $rowStyle) : RegisteredStyle
|
private function applyStyleAndRegister(Cell $cell, Style $rowStyle) : RegisteredStyle
|
||||||
{
|
{
|
||||||
$isRowStyle = false;
|
$isMatchingRowStyle = false;
|
||||||
if ($cell->getStyle()->isEmpty()) {
|
if ($cell->getStyle()->isEmpty()) {
|
||||||
$cell->setStyle($rowStyle);
|
$cell->setStyle($rowStyle);
|
||||||
|
|
||||||
$managedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
$possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
||||||
|
|
||||||
if ($managedStyle->isUpdated()) {
|
if ($possiblyUpdatedStyle->isUpdated()) {
|
||||||
$registeredStyle = $this->styleManager->registerStyle($managedStyle->getStyle());
|
$registeredStyle = $this->styleManager->registerStyle($possiblyUpdatedStyle->getStyle());
|
||||||
} else {
|
} else {
|
||||||
$registeredStyle = $this->styleManager->registerStyle($rowStyle);
|
$registeredStyle = $this->styleManager->registerStyle($rowStyle);
|
||||||
$isRowStyle = true;
|
$isMatchingRowStyle = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle);
|
$mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle);
|
||||||
$cell->setStyle($mergedCellAndRowStyle);
|
$cell->setStyle($mergedCellAndRowStyle);
|
||||||
|
|
||||||
$managedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
$possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
||||||
if ($managedStyle->isUpdated()) {
|
if ($possiblyUpdatedStyle->isUpdated()) {
|
||||||
$newCellStyle = $managedStyle->getStyle();
|
$newCellStyle = $possiblyUpdatedStyle->getStyle();
|
||||||
} else {
|
} else {
|
||||||
$newCellStyle = $mergedCellAndRowStyle;
|
$newCellStyle = $mergedCellAndRowStyle;
|
||||||
}
|
}
|
||||||
@ -187,7 +187,7 @@ class WorksheetManager implements WorksheetManagerInterface
|
|||||||
$registeredStyle = $this->styleManager->registerStyle($newCellStyle);
|
$registeredStyle = $this->styleManager->registerStyle($newCellStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new RegisteredStyle($registeredStyle, $isRowStyle);
|
return new RegisteredStyle($registeredStyle, $isMatchingRowStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getCellXMLWithStyle(Cell $cell, Style $style, int $currentCellIndex, int $nextCellIndex) : string
|
private function getCellXMLWithStyle(Cell $cell, Style $style, int $currentCellIndex, int $nextCellIndex) : string
|
||||||
|
@ -163,8 +163,8 @@ EOD;
|
|||||||
foreach ($row->getCells() as $columnIndexZeroBased => $cell) {
|
foreach ($row->getCells() as $columnIndexZeroBased => $cell) {
|
||||||
$registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle);
|
$registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle);
|
||||||
$cellStyle = $registeredStyle->getStyle();
|
$cellStyle = $registeredStyle->getStyle();
|
||||||
if ($registeredStyle->isRowStyle()) {
|
if ($registeredStyle->isMatchingRowStyle()) {
|
||||||
$rowStyle = $cellStyle;
|
$rowStyle = $cellStyle; // Replace actual rowStyle (possibly with null id) by registered style (with id)
|
||||||
}
|
}
|
||||||
$rowXML .= $this->getCellXML($rowIndexOneBased, $columnIndexZeroBased, $cell, $cellStyle->getId());
|
$rowXML .= $this->getCellXML($rowIndexOneBased, $columnIndexZeroBased, $cell, $cellStyle->getId());
|
||||||
}
|
}
|
||||||
@ -188,26 +188,26 @@ EOD;
|
|||||||
*/
|
*/
|
||||||
private function applyStyleAndRegister(Cell $cell, Style $rowStyle) : RegisteredStyle
|
private function applyStyleAndRegister(Cell $cell, Style $rowStyle) : RegisteredStyle
|
||||||
{
|
{
|
||||||
$isRowStyle = false;
|
$isMatchingRowStyle = false;
|
||||||
if ($cell->getStyle()->isEmpty()) {
|
if ($cell->getStyle()->isEmpty()) {
|
||||||
$cell->setStyle($rowStyle);
|
$cell->setStyle($rowStyle);
|
||||||
|
|
||||||
$managedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
$possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
||||||
|
|
||||||
if ($managedStyle->isUpdated()) {
|
if ($possiblyUpdatedStyle->isUpdated()) {
|
||||||
$registeredStyle = $this->styleManager->registerStyle($managedStyle->getStyle());
|
$registeredStyle = $this->styleManager->registerStyle($possiblyUpdatedStyle->getStyle());
|
||||||
} else {
|
} else {
|
||||||
$registeredStyle = $this->styleManager->registerStyle($rowStyle);
|
$registeredStyle = $this->styleManager->registerStyle($rowStyle);
|
||||||
$isRowStyle = true;
|
$isMatchingRowStyle = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle);
|
$mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle);
|
||||||
$cell->setStyle($mergedCellAndRowStyle);
|
$cell->setStyle($mergedCellAndRowStyle);
|
||||||
|
|
||||||
$managedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
$possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell);
|
||||||
|
|
||||||
if ($managedStyle->isUpdated()) {
|
if ($possiblyUpdatedStyle->isUpdated()) {
|
||||||
$newCellStyle = $managedStyle->getStyle();
|
$newCellStyle = $possiblyUpdatedStyle->getStyle();
|
||||||
} else {
|
} else {
|
||||||
$newCellStyle = $mergedCellAndRowStyle;
|
$newCellStyle = $mergedCellAndRowStyle;
|
||||||
}
|
}
|
||||||
@ -215,7 +215,7 @@ EOD;
|
|||||||
$registeredStyle = $this->styleManager->registerStyle($newCellStyle);
|
$registeredStyle = $this->styleManager->registerStyle($newCellStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new RegisteredStyle($registeredStyle, $isRowStyle);
|
return new RegisteredStyle($registeredStyle, $isMatchingRowStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,10 +28,10 @@ class StyleManagerTest extends TestCase
|
|||||||
$this->assertFalse($style->shouldWrapText());
|
$this->assertFalse($style->shouldWrapText());
|
||||||
|
|
||||||
$styleManager = $this->getStyleManager();
|
$styleManager = $this->getStyleManager();
|
||||||
$managedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell("multi\nlines", $style));
|
$possiblyUpdatedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell("multi\nlines", $style));
|
||||||
|
|
||||||
$this->assertTrue($managedStyle->isUpdated());
|
$this->assertTrue($possiblyUpdatedStyle->isUpdated());
|
||||||
$this->assertTrue($managedStyle->getStyle()->shouldWrapText());
|
$this->assertTrue($possiblyUpdatedStyle->getStyle()->shouldWrapText());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testApplyExtraStylesIfNeededShouldReturnNullIfWrapTextNotNeeded() : void
|
public function testApplyExtraStylesIfNeededShouldReturnNullIfWrapTextNotNeeded() : void
|
||||||
@ -40,9 +40,9 @@ class StyleManagerTest extends TestCase
|
|||||||
$this->assertFalse($style->shouldWrapText());
|
$this->assertFalse($style->shouldWrapText());
|
||||||
|
|
||||||
$styleManager = $this->getStyleManager();
|
$styleManager = $this->getStyleManager();
|
||||||
$managedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell('oneline', $style));
|
$possiblyUpdatedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell('oneline', $style));
|
||||||
|
|
||||||
$this->assertFalse($managedStyle->isUpdated());
|
$this->assertFalse($possiblyUpdatedStyle->isUpdated());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testApplyExtraStylesIfNeededShouldReturnNullIfWrapTextAlreadyApplied() : void
|
public function testApplyExtraStylesIfNeededShouldReturnNullIfWrapTextAlreadyApplied() : void
|
||||||
@ -51,8 +51,8 @@ class StyleManagerTest extends TestCase
|
|||||||
$this->assertTrue($style->shouldWrapText());
|
$this->assertTrue($style->shouldWrapText());
|
||||||
|
|
||||||
$styleManager = $this->getStyleManager();
|
$styleManager = $this->getStyleManager();
|
||||||
$managedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell("multi\nlines", $style));
|
$possiblyUpdatedStyle = $styleManager->applyExtraStylesIfNeeded(new Cell("multi\nlines", $style));
|
||||||
|
|
||||||
$this->assertFalse($managedStyle->isUpdated());
|
$this->assertFalse($possiblyUpdatedStyle->isUpdated());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user