diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php
index f30b59cf62..0abe7827f1 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php
@@ -16,6 +16,7 @@ use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/**
@@ -58,31 +59,24 @@ EOF
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
+ $output = new SymfonyStyle($input, $output);
$dispatcher = $this->getEventDispatcher();
+ $options = array();
if ($event = $input->getArgument('event')) {
if (!$dispatcher->hasListeners($event)) {
- $formatter = $this->getHelperSet()->get('formatter');
-
- $formattedBlock = $formatter->formatBlock(
- sprintf('[NOTE] The event "%s" does not have any registered listeners.', $event),
- 'fg=yellow',
- true
- );
-
- $output->writeln($formattedBlock);
+ $output->warning(sprintf('The event "%s" does not have any registered listeners.', $event));
return;
}
$options = array('event' => $event);
- } else {
- $options = array();
}
$helper = new DescriptorHelper();
$options['format'] = $input->getOption('format');
$options['raw_text'] = $input->getOption('raw');
+ $options['output'] = $output;
$helper->describe($output, $dispatcher, $options);
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
index c72abc9f3f..6a763688d2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
@@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Console\Descriptor;
use Symfony\Component\Console\Helper\Table;
+use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\DependencyInjection\Alias;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
@@ -349,42 +350,23 @@ class TextDescriptor extends Descriptor
{
$event = array_key_exists('event', $options) ? $options['event'] : null;
- $label = 'Registered listeners';
if (null !== $event) {
- $label .= sprintf(' for event %s', $event);
+ $title = sprintf('Registered Listeners for "%s" Event', $event);
} else {
- $label .= ' by event';
+ $title = 'Registered Listeners Grouped by Event';
}
- $this->writeText($this->formatSection('event_dispatcher', $label)."\n", $options);
+ $options['output']->title($title);
- $registeredListeners = $eventDispatcher->getListeners($event);
+ $registeredListeners = $eventDispatcher->getListeners($event, true);
if (null !== $event) {
- $this->writeText("\n");
- $table = new Table($this->getOutput());
- $table->getStyle()->setCellHeaderFormat('%s');
- $table->setHeaders(array('Order', 'Callable'));
-
- foreach ($registeredListeners as $order => $listener) {
- $table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($listener)));
- }
-
- $table->render();
+ $this->renderEventListenerTable($registeredListeners, $options['output']);
} else {
ksort($registeredListeners);
foreach ($registeredListeners as $eventListened => $eventListeners) {
- $this->writeText(sprintf("\n[Event] %s\n", $eventListened), $options);
-
- $table = new Table($this->getOutput());
- $table->getStyle()->setCellHeaderFormat('%s');
- $table->setHeaders(array('Order', 'Callable'));
-
- foreach ($eventListeners as $order => $eventListener) {
- $table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($eventListener)));
- }
-
- $table->render();
+ $options['output']->section(sprintf('"%s" event', $eventListened));
+ $this->renderEventListenerTable($eventListeners, $options['output']);
}
}
}
@@ -400,21 +382,20 @@ class TextDescriptor extends Descriptor
/**
* @param array $array
*/
- private function renderEventListenerTable(array $eventListeners)
+ private function renderEventListenerTable(array $eventListeners, SymfonyStyle $renderer)
{
- $table = new Table($this->getOutput());
- $table->getStyle()->setCellHeaderFormat('%s');
- $table->setHeaders(array('Order', 'Callable', 'Priority'));
+ $tableHeaders = array('Order', 'Callable', 'Priority');
+ $tableRows = array();
krsort($eventListeners);
$order = 1;
foreach ($eventListeners as $priority => $listeners) {
foreach ($listeners as $listener) {
- $table->addRow(array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority));
+ $tableRows[] = array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority);
}
}
- $table->render();
+ $renderer->table($tableHeaders, $tableRows);
}
/**
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt
index 160bb33483..b8ae6b8c3f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt
@@ -1,8 +1,9 @@
-[event_dispatcher] Registered listeners for event event1
+[33mRegistered Listeners for "event1" Event[39m
+[33m=======================================[39m
-+-------+-------------------+
-| Order | Callable |
-+-------+-------------------+
-| #1 | global_function() |
-| #2 | \Closure() |
-+-------+-------------------+
\ No newline at end of file
+ ------- ------------------- ----------
+ [32mOrder[39m [32mCallable[39m [32mPriority[39m
+ ------- ------------------- ----------
+ #1 global_function() 255
+ #2 \Closure() -1
+ ------- ------------------- ----------
\ No newline at end of file
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt
index 84e39634e4..2040a428aa 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt
@@ -1,16 +1,21 @@
-[event_dispatcher] Registered listeners by event
+[33mRegistered Listeners Grouped by Event[39m
+[33m=====================================[39m
-[Event] event1
-+-------+-------------------+
-| Order | Callable |
-+-------+-------------------+
-| #1 | global_function() |
-| #2 | \Closure() |
-+-------+-------------------+
+[33m"event1" event[39m
+[33m--------------[39m
-[Event] event2
-+-------+-----------------------------------------------------------------------------------+
-| Order | Callable |
-+-------+-----------------------------------------------------------------------------------+
-| #1 | Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() |
-+-------+-----------------------------------------------------------------------------------+
\ No newline at end of file
+ ------- ------------------- ----------
+ [32mOrder[39m [32mCallable[39m [32mPriority[39m
+ ------- ------------------- ----------
+ #1 global_function() 255
+ #2 \Closure() -1
+ ------- ------------------- ----------
+
+[33m"event2" event[39m
+[33m--------------[39m
+
+ ------- ----------------------------------------------------------------------------------- ----------
+ [32mOrder[39m [32mCallable[39m [32mPriority[39m
+ ------- ----------------------------------------------------------------------------------- ----------
+ #1 Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() 0
+ ------- ----------------------------------------------------------------------------------- ----------
\ No newline at end of file