/**
  * Renders horizontal header separator.
  *
  * Example: +-----+-----------+-------+
  */
 private function renderRowSeparator()
 {
     if (0 === ($count = $this->numberOfColumns)) {
         return;
     }
     if (!$this->style->getHorizontalBorderChar() && !$this->style->getCrossingChar()) {
         return;
     }
     $markup = $this->style->getCrossingChar();
     for ($column = 0; $column < $count; ++$column) {
         $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->columnWidths[$column]) . $this->style->getCrossingChar();
     }
     $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup));
 }
Exemple #2
0
 /**
  * Renders table cell with padding.
  *
  * @param array  $row
  * @param int    $column
  * @param string $cellFormat
  */
 private function renderCell(array $row, $column, $cellFormat)
 {
     $cell = isset($row[$column]) ? $row[$column] : '';
     $width = $this->getColumnWidth($column);
     if ($cell instanceof TableCell && $cell->getColspan() > 1) {
         // add the width of the following columns(numbers of colspan).
         foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
             $width += $this->getColumnSeparatorWidth() + $this->getColumnWidth($nextColumn);
         }
     }
     // str_pad won't work properly with multi-byte strings, we need to fix the padding
     if (function_exists('mb_strwidth') && false !== ($encoding = mb_detect_encoding($cell))) {
         $width += strlen($cell) - mb_strwidth($cell, $encoding);
     }
     if ($cell instanceof TableSeparator) {
         return sprintf($this->style->getBorderFormat(), str_repeat($this->style->getHorizontalBorderChar(), $width));
     }
     $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
     $content = sprintf($this->style->getCellRowContentFormat(), $cell);
     return sprintf($cellFormat, str_pad($content, $width, $this->style->getPaddingChar(), $this->style->getPadType()));
 }
Exemple #3
0
 private function getHiddenSeparator()
 {
     return str_repeat($this->style->getHorizontalBorderChar(), $this->getHiddenCellWidth()) . $this->style->getCrossingChar();
 }