4 * This file is part of the Behat.
5 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
11 namespace Behat\Testwork\Output;
13 use Behat\Testwork\EventDispatcher\TestworkEventDispatcher;
14 use Behat\Testwork\Output\Node\EventListener\EventListener;
15 use Behat\Testwork\Output\Printer\OutputPrinter;
16 use Symfony\Component\EventDispatcher\Event;
19 * Formatter built around the idea of event delegation and composition.
21 * @author Konstantin Kudryashov <ever.zet@gmail.com>
23 final class NodeEventListeningFormatter implements Formatter
47 * Initializes formatter.
50 * @param string $description
51 * @param array $parameters
52 * @param OutputPrinter $printer
53 * @param EventListener $listener
55 public function __construct($name, $description, array $parameters, OutputPrinter $printer, EventListener $listener)
58 $this->description = $description;
59 $this->parameters = $parameters;
60 $this->printer = $printer;
61 $this->listener = $listener;
65 * Returns an array of event names this subscriber wants to listen to.
67 * @return array The event names to listen to
69 public static function getSubscribedEvents()
71 return array(TestworkEventDispatcher::BEFORE_ALL_EVENTS => 'listenEvent');
75 * Proxies event to the listener.
78 * @param null|string $eventName
80 public function listenEvent(Event $event, $eventName = null)
82 $eventName = $eventName ?: $event->getName();
84 $this->listener->listenEvent($this, $event, $eventName);
90 public function getName()
98 public function getDescription()
100 return $this->description;
106 public function getOutputPrinter()
108 return $this->printer;
114 public function setParameter($name, $value)
116 $this->parameters[$name] = $value;
122 public function getParameter($name)
124 return isset($this->parameters[$name]) ? $this->parameters[$name] : null;