2 namespace Consolidation\OutputFormatters\StructuredData;
4 use Consolidation\OutputFormatters\Options\FormatterOptions;
5 use Consolidation\OutputFormatters\StructuredData\ListDataInterface;
6 use Consolidation\OutputFormatters\Transformations\PropertyParser;
7 use Consolidation\OutputFormatters\Transformations\ReorderFields;
8 use Consolidation\OutputFormatters\Transformations\TableTransformation;
9 use Consolidation\OutputFormatters\Transformations\PropertyListTableTransformation;
12 * Holds an array where each element of the array is one
13 * key : value pair. The keys must be unique, as is typically
14 * the case for associative arrays.
16 class PropertyList extends AbstractStructuredList implements ConversionInterface
21 public function convert(FormatterOptions $options)
23 $defaults = $this->defaultOptions();
24 $fields = $this->getFields($options, $defaults);
25 if (FieldProcessor::hasUnstructuredFieldAccess($fields)) {
26 return new UnstructuredData($this->getArrayCopy());
32 * Restructure this data for output by converting it into a table
33 * transformation object.
35 * @param FormatterOptions $options Options that affect output formatting.
36 * @return Consolidation\OutputFormatters\Transformations\TableTransformation
38 public function restructure(FormatterOptions $options)
40 $data = [$this->getArrayCopy()];
41 $options->setConfigurationDefault('list-orientation', true);
42 $tableTransformer = $this->createTableTransformation($data, $options);
43 return $tableTransformer;
46 public function getListData(FormatterOptions $options)
48 $data = $this->getArrayCopy();
50 $defaults = $this->defaultOptions();
51 $fieldLabels = $this->getReorderedFieldLabels([$data], $options, $defaults);
54 foreach ($fieldLabels as $id => $label) {
55 $result[$id] = $data[$id];
60 protected function defaultOptions()
63 FormatterOptions::LIST_ORIENTATION => true,
64 ] + parent::defaultOptions();
67 protected function instantiateTableTransformation($data, $fieldLabels, $rowLabels)
69 return new PropertyListTableTransformation($data, $fieldLabels, $rowLabels);