[Console] [TableHelper] make it work with SymfonyStyle.
This commit is contained in:
parent
da357d8424
commit
43cc93c7e8
@ -17,6 +17,7 @@ use Symfony\Component\Console\Helper\Helper;
|
|||||||
use Symfony\Component\Console\Helper\ProgressBar;
|
use Symfony\Component\Console\Helper\ProgressBar;
|
||||||
use Symfony\Component\Console\Helper\SymfonyQuestionHelper;
|
use Symfony\Component\Console\Helper\SymfonyQuestionHelper;
|
||||||
use Symfony\Component\Console\Helper\Table;
|
use Symfony\Component\Console\Helper\Table;
|
||||||
|
use Symfony\Component\Console\Helper\TableCell;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
@ -204,7 +205,16 @@ class SymfonyStyle extends OutputStyle
|
|||||||
*/
|
*/
|
||||||
public function table(array $headers, array $rows)
|
public function table(array $headers, array $rows)
|
||||||
{
|
{
|
||||||
$headers = array_map(function ($value) { return sprintf('<info>%s</>', $value); }, $headers);
|
array_walk_recursive($headers, function (&$value) {
|
||||||
|
if ($value instanceof TableCell) {
|
||||||
|
$value = new TableCell(sprintf('<info>%s</>', $value), array(
|
||||||
|
'colspan' => $value->getColspan(),
|
||||||
|
'rowspan' => $value->getRowspan(),
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$value = sprintf('<info>%s</>', $value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$table = new Table($this);
|
$table = new Table($this);
|
||||||
$table->setHeaders($headers);
|
$table->setHeaders($headers);
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
|
||||||
|
use Symfony\Component\Console\Helper\TableCell;
|
||||||
|
|
||||||
|
//Ensure formatting tables when using multiple headers with TableCell
|
||||||
|
return function (InputInterface $input, OutputInterface $output) {
|
||||||
|
$headers = array(
|
||||||
|
array(new TableCell('Main table title', array('colspan' => 3))),
|
||||||
|
array('ISBN', 'Title', 'Author'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$rows = array(
|
||||||
|
array(
|
||||||
|
'978-0521567817',
|
||||||
|
'De Monarchia',
|
||||||
|
new TableCell("Dante Alighieri\nspans multiple rows", array('rowspan' => 2)),
|
||||||
|
),
|
||||||
|
array('978-0804169127', 'Divine Comedy'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$output = new SymfonyStyleWithForcedLineLength($input, $output);
|
||||||
|
$output->table($headers, $rows);
|
||||||
|
};
|
@ -0,0 +1,9 @@
|
|||||||
|
---------------- --------------- ---------------------
|
||||||
|
Main table title
|
||||||
|
---------------- --------------- ---------------------
|
||||||
|
ISBN Title Author
|
||||||
|
---------------- --------------- ---------------------
|
||||||
|
978-0521567817 De Monarchia Dante Alighieri
|
||||||
|
978-0804169127 Divine Comedy spans multiple rows
|
||||||
|
---------------- --------------- ---------------------
|
||||||
|
|
Reference in New Issue
Block a user