Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/** This file is part of the Symfony package.** (c) Fabien Potencier <fabien@symfony.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Symfony\Component\Console\Helper;use Symfony\Component\Console\Exception\InvalidArgumentException;use Symfony\Component\Console\Exception\LogicException;/*** Defines the styles for a Table.** @author Fabien Potencier <fabien@symfony.com>* @author Саша Стаменковић <umpirsky@gmail.com>* @author Dany Maillard <danymaillard93b@gmail.com>*/class TableStyle{private string $paddingChar = ' ';private string $horizontalOutsideBorderChar = '-';private string $horizontalInsideBorderChar = '-';private string $verticalOutsideBorderChar = '|';private string $verticalInsideBorderChar = '|';private string $crossingChar = '+';private string $crossingTopRightChar = '+';private string $crossingTopMidChar = '+';private string $crossingTopLeftChar = '+';private string $crossingMidRightChar = '+';private string $crossingBottomRightChar = '+';private string $crossingBottomMidChar = '+';private string $crossingBottomLeftChar = '+';private string $crossingMidLeftChar = '+';private string $crossingTopLeftBottomChar = '+';private string $crossingTopMidBottomChar = '+';private string $crossingTopRightBottomChar = '+';private string $headerTitleFormat = '<fg=black;bg=white;options=bold> %s </>';private string $footerTitleFormat = '<fg=black;bg=white;options=bold> %s </>';private string $cellHeaderFormat = '<info>%s</info>';private string $cellRowFormat = '%s';private string $cellRowContentFormat = ' %s ';private string $borderFormat = '%s';private int $padType = \STR_PAD_RIGHT;/*** Sets padding character, used for cell padding.** @return $this*/public function setPaddingChar(string $paddingChar): static{if (!$paddingChar) {throw new LogicException('The padding char must not be empty.');}$this->paddingChar = $paddingChar;return $this;}/*** Gets padding character, used for cell padding.*/public function getPaddingChar(): string{return $this->paddingChar;}/*** Sets horizontal border characters.** <code>* ╔═══════════════╤══════════════════════════╤══════════════════╗* 1 ISBN 2 Title │ Author â•‘* ╠═══════════════╪══════════════════════════╪══════════════════╣* â•‘ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri â•‘* â•‘ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens â•‘* â•‘ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien â•‘* â•‘ 80-902734-1-6 │ And Then There Were None │ Agatha Christie â•‘* ╚═══════════════╧══════════════════════════╧══════════════════╝* </code>** @return $this*/public function setHorizontalBorderChars(string $outside, string $inside = null): static{$this->horizontalOutsideBorderChar = $outside;$this->horizontalInsideBorderChar = $inside ?? $outside;return $this;}/*** Sets vertical border characters.** <code>* ╔═══════════════╤══════════════════════════╤══════════════════╗* â•‘ ISBN │ Title │ Author â•‘* ╠═══════1═══════╪══════════════════════════╪══════════════════╣* â•‘ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri â•‘* â•‘ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens â•‘* ╟───────2───────┼──────────────────────────┼──────────────────╢* â•‘ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien â•‘* â•‘ 80-902734-1-6 │ And Then There Were None │ Agatha Christie â•‘* ╚═══════════════╧══════════════════════════╧══════════════════╝* </code>** @return $this*/public function setVerticalBorderChars(string $outside, string $inside = null): static{$this->verticalOutsideBorderChar = $outside;$this->verticalInsideBorderChar = $inside ?? $outside;return $this;}/*** Gets border characters.** @internal*/public function getBorderChars(): array{return [$this->horizontalOutsideBorderChar,$this->verticalOutsideBorderChar,$this->horizontalInsideBorderChar,$this->verticalInsideBorderChar,];}/*** Sets crossing characters.** Example:* <code>* 1═══════════════2══════════════════════════2══════════════════3* â•‘ ISBN │ Title │ Author â•‘* 8'══════════════0'═════════════════════════0'═════════════════4'* â•‘ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri â•‘* â•‘ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens â•‘* 8───────────────0──────────────────────────0──────────────────4* â•‘ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien â•‘* â•‘ 80-902734-1-6 │ And Then There Were None │ Agatha Christie â•‘* 7═══════════════6══════════════════════════6══════════════════5* </code>** @param string $cross Crossing char (see #0 of example)* @param string $topLeft Top left char (see #1 of example)* @param string $topMid Top mid char (see #2 of example)* @param string $topRight Top right char (see #3 of example)* @param string $midRight Mid right char (see #4 of example)* @param string $bottomRight Bottom right char (see #5 of example)* @param string $bottomMid Bottom mid char (see #6 of example)* @param string $bottomLeft Bottom left char (see #7 of example)* @param string $midLeft Mid left char (see #8 of example)* @param string|null $topLeftBottom Top left bottom char (see #8' of example), equals to $midLeft if null* @param string|null $topMidBottom Top mid bottom char (see #0' of example), equals to $cross if null* @param string|null $topRightBottom Top right bottom char (see #4' of example), equals to $midRight if null** @return $this*/public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = null, string $topMidBottom = null, string $topRightBottom = null): static{$this->crossingChar = $cross;$this->crossingTopLeftChar = $topLeft;$this->crossingTopMidChar = $topMid;$this->crossingTopRightChar = $topRight;$this->crossingMidRightChar = $midRight;$this->crossingBottomRightChar = $bottomRight;$this->crossingBottomMidChar = $bottomMid;$this->crossingBottomLeftChar = $bottomLeft;$this->crossingMidLeftChar = $midLeft;$this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft;$this->crossingTopMidBottomChar = $topMidBottom ?? $cross;$this->crossingTopRightBottomChar = $topRightBottom ?? $midRight;return $this;}/*** Sets default crossing character used for each cross.** @see {@link setCrossingChars()} for setting each crossing individually.*/public function setDefaultCrossingChar(string $char): self{return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char);}/*** Gets crossing character.*/public function getCrossingChar(): string{return $this->crossingChar;}/*** Gets crossing characters.** @internal*/public function getCrossingChars(): array{return [$this->crossingChar,$this->crossingTopLeftChar,$this->crossingTopMidChar,$this->crossingTopRightChar,$this->crossingMidRightChar,$this->crossingBottomRightChar,$this->crossingBottomMidChar,$this->crossingBottomLeftChar,$this->crossingMidLeftChar,$this->crossingTopLeftBottomChar,$this->crossingTopMidBottomChar,$this->crossingTopRightBottomChar,];}/*** Sets header cell format.** @return $this*/public function setCellHeaderFormat(string $cellHeaderFormat): static{$this->cellHeaderFormat = $cellHeaderFormat;return $this;}/*** Gets header cell format.*/public function getCellHeaderFormat(): string{return $this->cellHeaderFormat;}/*** Sets row cell format.** @return $this*/public function setCellRowFormat(string $cellRowFormat): static{$this->cellRowFormat = $cellRowFormat;return $this;}/*** Gets row cell format.*/public function getCellRowFormat(): string{return $this->cellRowFormat;}/*** Sets row cell content format.** @return $this*/public function setCellRowContentFormat(string $cellRowContentFormat): static{$this->cellRowContentFormat = $cellRowContentFormat;return $this;}/*** Gets row cell content format.*/public function getCellRowContentFormat(): string{return $this->cellRowContentFormat;}/*** Sets table border format.** @return $this*/public function setBorderFormat(string $borderFormat): static{$this->borderFormat = $borderFormat;return $this;}/*** Gets table border format.*/public function getBorderFormat(): string{return $this->borderFormat;}/*** Sets cell padding type.** @return $this*/public function setPadType(int $padType): static{if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) {throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).');}$this->padType = $padType;return $this;}/*** Gets cell padding type.*/public function getPadType(): int{return $this->padType;}public function getHeaderTitleFormat(): string{return $this->headerTitleFormat;}/*** @return $this*/public function setHeaderTitleFormat(string $format): static{$this->headerTitleFormat = $format;return $this;}public function getFooterTitleFormat(): string{return $this->footerTitleFormat;}/*** @return $this*/public function setFooterTitleFormat(string $format): static{$this->footerTitleFormat = $format;return $this;}}