3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
5 use Consolidation\AnnotatedCommand\Hooks\ExtractOutputInterface;
6 use Consolidation\AnnotatedCommand\Hooks\HookManager;
7 use Consolidation\AnnotatedCommand\OutputDataInterface;
12 class ExtracterHookDispatcher extends HookDispatcher implements ExtractOutputInterface
15 * Convert the result object to printable output in
18 public function extractOutput($result)
20 if ($result instanceof OutputDataInterface) {
21 return $result->getOutputData();
25 HookManager::EXTRACT_OUTPUT,
27 $extractors = $this->getHooks($hooks);
28 foreach ($extractors as $extractor) {
29 $structuredOutput = $this->callExtractor($extractor, $result);
30 if (isset($structuredOutput)) {
31 return $structuredOutput;
38 protected function callExtractor($extractor, $result)
40 if ($extractor instanceof ExtractOutputInterface) {
41 return $extractor->extractOutput($result);
43 if (is_callable($extractor)) {
44 return $extractor($result);