Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / consolidation / output-formatters / src / StructuredData / AbstractListData.php
1 <?php
2 namespace Consolidation\OutputFormatters\StructuredData;
3
4 use Consolidation\OutputFormatters\Options\FormatterOptions;
5 use Consolidation\OutputFormatters\Transformations\ReorderFields;
6
7 /**
8  * Base class for all list data types.
9  */
10 class AbstractListData extends \ArrayObject implements ListDataInterface
11 {
12     public function __construct($data)
13     {
14         parent::__construct($data);
15     }
16
17     public function getListData(FormatterOptions $options)
18     {
19         return array_keys($this->getArrayCopy());
20     }
21
22     protected function getReorderedFieldLabels($data, $options, $defaults)
23     {
24         $reorderer = new ReorderFields();
25         $fieldLabels = $reorderer->reorder(
26             $this->getFields($options, $defaults),
27             $options->get(FormatterOptions::FIELD_LABELS, $defaults),
28             $data
29         );
30         return $fieldLabels;
31     }
32
33     protected function getFields($options, $defaults)
34     {
35         $fieldShortcut = $options->get(FormatterOptions::FIELD);
36         if (!empty($fieldShortcut)) {
37             return [$fieldShortcut];
38         }
39         $result = $options->get(FormatterOptions::FIELDS, $defaults);
40         if (!empty($result)) {
41             return $result;
42         }
43         return $options->get(FormatterOptions::DEFAULT_FIELDS, $defaults);
44     }
45
46     /**
47      * A structured list may provide its own set of default options. These
48      * will be used in place of the command's default options (from the
49      * annotations) in instances where the user does not provide the options
50      * explicitly (on the commandline) or implicitly (via a configuration file).
51      *
52      * @return array
53      */
54     protected function defaultOptions()
55     {
56         return [
57             FormatterOptions::FIELDS => [],
58             FormatterOptions::FIELD_LABELS => [],
59         ];
60     }
61 }