2 namespace Consolidation\OutputFormatters\StructuredData;
4 use Consolidation\OutputFormatters\Options\FormatterOptions;
6 trait RenderCellCollectionTrait
9 /** @var RenderCellInterface[] */
10 protected $rendererList = [
11 RenderCellCollectionInterface::PRIORITY_FIRST => [],
12 RenderCellCollectionInterface::PRIORITY_NORMAL => [],
13 RenderCellCollectionInterface::PRIORITY_FALLBACK => [],
21 public function addRenderer(RenderCellInterface $renderer, $priority = RenderCellCollectionInterface::PRIORITY_NORMAL)
23 $this->rendererList[$priority][] = $renderer;
28 * Add a callable as a renderer
32 public function addRendererFunction(callable $rendererFn, $priority = RenderCellCollectionInterface::PRIORITY_NORMAL)
34 $renderer = new CallableRenderer($rendererFn);
35 return $this->addRenderer($renderer, $priority);
41 public function renderCell($key, $cellData, FormatterOptions $options, $rowData)
43 $flattenedRendererList = array_reduce(
45 function ($carry, $item) {
46 return array_merge($carry, $item);
51 foreach ($flattenedRendererList as $renderer) {
52 $cellData = $renderer->renderCell($key, $cellData, $options, $rowData);
53 if (is_string($cellData)) {