annotate vendor/consolidation/annotated-command/src/Hooks/Dispatchers/ExtracterHookDispatcher.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
Chris@0 4
Chris@0 5 use Consolidation\AnnotatedCommand\Hooks\ExtractOutputInterface;
Chris@0 6 use Consolidation\AnnotatedCommand\Hooks\HookManager;
Chris@0 7 use Consolidation\AnnotatedCommand\OutputDataInterface;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Call hooks
Chris@0 11 */
Chris@0 12 class ExtracterHookDispatcher extends HookDispatcher implements ExtractOutputInterface
Chris@0 13 {
Chris@0 14 /**
Chris@0 15 * Convert the result object to printable output in
Chris@0 16 * structured form.
Chris@0 17 */
Chris@0 18 public function extractOutput($result)
Chris@0 19 {
Chris@0 20 if ($result instanceof OutputDataInterface) {
Chris@0 21 return $result->getOutputData();
Chris@0 22 }
Chris@0 23
Chris@0 24 $hooks = [
Chris@0 25 HookManager::EXTRACT_OUTPUT,
Chris@0 26 ];
Chris@0 27 $extractors = $this->getHooks($hooks);
Chris@0 28 foreach ($extractors as $extractor) {
Chris@0 29 $structuredOutput = $this->callExtractor($extractor, $result);
Chris@0 30 if (isset($structuredOutput)) {
Chris@0 31 return $structuredOutput;
Chris@0 32 }
Chris@0 33 }
Chris@0 34
Chris@0 35 return $result;
Chris@0 36 }
Chris@0 37
Chris@0 38 protected function callExtractor($extractor, $result)
Chris@0 39 {
Chris@0 40 if ($extractor instanceof ExtractOutputInterface) {
Chris@0 41 return $extractor->extractOutput($result);
Chris@0 42 }
Chris@0 43 if (is_callable($extractor)) {
Chris@0 44 return $extractor($result);
Chris@0 45 }
Chris@0 46 }
Chris@0 47 }