2 namespace Consolidation\OutputFormatters\StructuredData;
4 use Consolidation\OutputFormatters\Options\FormatterOptions;
5 use Consolidation\OutputFormatters\Transformations\ReorderFields;
8 * Base class for all list data types.
10 class AbstractListData extends \ArrayObject implements ListDataInterface
12 public function __construct($data)
14 parent::__construct($data);
17 public function getListData(FormatterOptions $options)
19 return array_keys($this->getArrayCopy());
22 protected function getReorderedFieldLabels($data, $options, $defaults)
24 $reorderer = new ReorderFields();
25 $fieldLabels = $reorderer->reorder(
26 $this->getFields($options, $defaults),
27 $options->get(FormatterOptions::FIELD_LABELS, $defaults),
33 protected function getFields($options, $defaults)
35 $fieldShortcut = $options->get(FormatterOptions::FIELD);
36 if (!empty($fieldShortcut)) {
37 return [$fieldShortcut];
39 $result = $options->get(FormatterOptions::FIELDS, $defaults);
40 if (!empty($result)) {
43 return $options->get(FormatterOptions::DEFAULT_FIELDS, $defaults);
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).
54 protected function defaultOptions()
57 FormatterOptions::FIELDS => [],
58 FormatterOptions::FIELD_LABELS => [],