public static function drawRow(IO $io, BorderStyle $style, array $row, array $columnLengths, array $alignments, $cellFormat, Style $cellStyle = null, $paddingChar, $indentation = 0)
    {
        $totalLines = 0;

        // Split all cells into lines
        foreach ($row as $col => $cell) {
            $row[$col] = explode("\n", $cell);
            $totalLines = max($totalLines, count($row[$col]));
        }

        $nbColumns = count($row);
        $borderVLChar = $io->format($style->getLineVLChar(), $style->getStyle());
        $borderVCChar = $io->format($style->getLineVCChar(), $style->getStyle());
        $borderVRChar = $io->format($style->getLineVRChar(), $style->getStyle());

        for ($i = 0; $i < $totalLines; ++$i) {
            $line = str_repeat(' ', $indentation);
            $line .= $borderVLChar;

            foreach ($row as $col => &$remainingLines) {
                $cellLine = $remainingLines ? array_shift($remainingLines) : '';
                $totalPadLength = $columnLengths[$col] - StringUtil::getLength($cellLine, $io);
                $paddingLeft = '';
                $paddingRight = '';

                if ($totalPadLength > 0) {
                    $alignment = isset($alignments[$col]) ? $alignments[$col] : Alignment::LEFT;

                    switch ($alignment) {
                        case Alignment::LEFT:
                            $paddingRight = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::RIGHT:
                            $paddingLeft = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::CENTER:
                            $leftPadLength = floor($totalPadLength / 2);
                            $paddingLeft = str_repeat($paddingChar, $leftPadLength);
                            $paddingRight = str_repeat($paddingChar, $totalPadLength - $leftPadLength);
                            break;
                    }
                }

                $line .= $io->format(sprintf($cellFormat, $paddingLeft.$cellLine.$paddingRight), $cellStyle);
                $line .= $col < $nbColumns - 1 ? $borderVCChar : $borderVRChar;
            }

            // Remove trailing space
            $io->write(rtrim($line)."\n");
        }
    }
public static function drawRow(IO $io, BorderStyle $style, array $row, array $columnLengths, array $alignments, $cellFormat, Style $cellStyle = null, $paddingChar, $indentation = 0)
    {
        $totalLines = 0;

        // Split all cells into lines
        foreach ($row as $col => $cell) {
            $row[$col] = explode("\n", $cell);
            $totalLines = max($totalLines, count($row[$col]));
        }

        $nbColumns = count($row);
        $borderVLChar = $io->format($style->getLineVLChar(), $style->getStyle());
        $borderVCChar = $io->format($style->getLineVCChar(), $style->getStyle());
        $borderVRChar = $io->format($style->getLineVRChar(), $style->getStyle());

        for ($i = 0; $i < $totalLines; ++$i) {
            $line = str_repeat(' ', $indentation);
            $line .= $borderVLChar;

            foreach ($row as $col => &$remainingLines) {
                $cellLine = $remainingLines ? array_shift($remainingLines) : '';
                $totalPadLength = $columnLengths[$col] - StringUtil::getLength($cellLine, $io);
                $paddingLeft = '';
                $paddingRight = '';

                if ($totalPadLength > 0) {
                    $alignment = isset($alignments[$col]) ? $alignments[$col] : Alignment::LEFT;

                    switch ($alignment) {
                        case Alignment::LEFT:
                            $paddingRight = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::RIGHT:
                            $paddingLeft = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::CENTER:
                            $leftPadLength = floor($totalPadLength / 2);
                            $paddingLeft = str_repeat($paddingChar, $leftPadLength);
                            $paddingRight = str_repeat($paddingChar, $totalPadLength - $leftPadLength);
                            break;
                    }
                }

                $line .= $io->format(sprintf($cellFormat, $paddingLeft.$cellLine.$paddingRight), $cellStyle);
                $line .= $col < $nbColumns - 1 ? $borderVCChar : $borderVRChar;
            }

            // Remove trailing space
            $io->write(rtrim($line)."\n");
        }
    }
public static function drawRow ( IO $ io , BorderStyle $ style , array $ row , array $ columnLengths , array $ alignments , $ cellFormat , Style $ cellStyle = null , $ paddingChar , $ indentation = 0 ) { $ totalLines = 0 ; // Split all cells into lines foreach ( $ row as $ col => $ cell ) { $ row [ $ col ] = explode ( "\n" , $ cell ) ; $ totalLines = max ( $ totalLines , count ( $ row [ $ col ] ) ) ; } $ nbColumns = count ( $ row ) ; $ borderVLChar = $ io -> format ( $ style -> getLineVLChar ( ) , $ style -> getStyle ( ) ) ; $ borderVCChar = $ io -> format ( $ style -> getLineVCChar ( ) , $ style -> getStyle ( ) ) ; $ borderVRChar = $ io -> format ( $ style -> getLineVRChar ( ) , $ style -> getStyle ( ) ) ; for ( $ i = 0 ; $ i < $ totalLines ; ++ $ i ) { $ line = str_repeat ( ' ' , $ indentation ) ; $ line .= $ borderVLChar ; foreach ( $ row as $ col => & $ remainingLines ) { $ cellLine = $ remainingLines ? array_shift ( $ remainingLines ) : '' ; $ totalPadLength = $ columnLengths [ $ col ] - StringUtil :: getLength ( $ cellLine , $ io ) ; $ paddingLeft = '' ; $ paddingRight = '' ; if ( $ totalPadLength > 0 ) { $ alignment = isset ( $ alignments [ $ col ] ) ? $ alignments [ $ col ] : Alignment :: LEFT ; switch ( $ alignment ) { case Alignment :: LEFT : $ paddingRight = str_repeat ( $ paddingChar , $ totalPadLength ) ; break ; case Alignment :: RIGHT : $ paddingLeft = str_repeat ( $ paddingChar , $ totalPadLength ) ; break ; case Alignment :: CENTER : $ leftPadLength = floor ( $ totalPadLength / 2 ) ; $ paddingLeft = str_repeat ( $ paddingChar , $ leftPadLength ) ; $ paddingRight = str_repeat ( $ paddingChar , $ totalPadLength - $ leftPadLength ) ; break ; } } $ line .= $ io -> format ( sprintf ( $ cellFormat , $ paddingLeft . $ cellLine . $ paddingRight ) , $ cellStyle ) ; $ line .= $ col < $ nbColumns - 1 ? $ borderVCChar : $ borderVRChar ; } // Remove trailing space $ io -> write ( rtrim ( $ line ) . "\n" ) ; } }
Draws a bordered row of cells.

@param IO          $io            The I/O.
@param BorderStyle $style         The border style.
@param string[]    $row           The row cells.
@param int[]       $columnLengths The lengths of the cells.
@param int[]       $alignments    The alignments of the cells.
@param string      $cellFormat    The cell format.
@param Style       $cellStyle     The cell style.
@param string      $paddingChar   The character used to pad cells.
@param int         $indentation   The number of spaces to indent.
Draws a bordered row of cells .