Version 1
[yaffs-website] / vendor / consolidation / output-formatters / src / StructuredData / PropertyList.php
1 <?php
2 namespace Consolidation\OutputFormatters\StructuredData;
3
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;
10
11 /**
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.
15  */
16 class PropertyList extends AbstractStructuredList
17 {
18     /**
19      * Restructure this data for output by converting it into a table
20      * transformation object.
21      *
22      * @param FormatterOptions $options Options that affect output formatting.
23      * @return Consolidation\OutputFormatters\Transformations\TableTransformation
24      */
25     public function restructure(FormatterOptions $options)
26     {
27         $data = [$this->getArrayCopy()];
28         $options->setConfigurationDefault('list-orientation', true);
29         $tableTransformer = $this->createTableTransformation($data, $options);
30         return $tableTransformer;
31     }
32
33     public function getListData(FormatterOptions $options)
34     {
35         $data = $this->getArrayCopy();
36
37         $defaults = $this->defaultOptions();
38         $fieldLabels = $this->getReorderedFieldLabels([$data], $options, $defaults);
39
40         $result = [];
41         foreach ($fieldLabels as $id => $label) {
42             $result[$id] = $data[$id];
43         }
44         return $result;
45     }
46
47     protected function defaultOptions()
48     {
49         return [
50             FormatterOptions::LIST_ORIENTATION => true,
51         ] + parent::defaultOptions();
52     }
53
54     protected function instantiateTableTransformation($data, $fieldLabels, $rowLabels)
55     {
56         return new PropertyListTableTransformation($data, $fieldLabels, $rowLabels);
57     }
58 }