You are here

private function Table::renderCell in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/console/Helper/Table.php \Symfony\Component\Console\Helper\Table::renderCell()

Renders table cell with padding.

Parameters

array $row:

int $column:

string $cellFormat:

1 call to Table::renderCell()
Table::renderRow in vendor/symfony/console/Helper/Table.php
Renders table row.

File

vendor/symfony/console/Helper/Table.php, line 292

Class

Table
Provides helpers to display a table.

Namespace

Symfony\Component\Console\Helper

Code

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) {
    $this->output
      ->write(sprintf($this->style
      ->getBorderFormat(), str_repeat($this->style
      ->getHorizontalBorderChar(), $width)));
  }
  else {
    $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output
      ->getFormatter(), $cell);
    $content = sprintf($this->style
      ->getCellRowContentFormat(), $cell);
    $this->output
      ->write(sprintf($cellFormat, str_pad($content, $width, $this->style
      ->getPaddingChar(), $this->style
      ->getPadType())));
  }
}