Completed
Push — master ( d78ef5...799811 )
by Greg
03:23 queued 01:33
created

AbstractListData::getListData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
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
}
62