Version 1
[yaffs-website] / vendor / consolidation / output-formatters / src / StructuredData / PropertyList.php
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php b/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php
new file mode 100644 (file)
index 0000000..8a34225
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\StructuredData\ListDataInterface;
+use Consolidation\OutputFormatters\Transformations\PropertyParser;
+use Consolidation\OutputFormatters\Transformations\ReorderFields;
+use Consolidation\OutputFormatters\Transformations\TableTransformation;
+use Consolidation\OutputFormatters\Transformations\PropertyListTableTransformation;
+
+/**
+ * Holds an array where each element of the array is one
+ * key : value pair.  The keys must be unique, as is typically
+ * the case for associative arrays.
+ */
+class PropertyList extends AbstractStructuredList
+{
+    /**
+     * Restructure this data for output by converting it into a table
+     * transformation object.
+     *
+     * @param FormatterOptions $options Options that affect output formatting.
+     * @return Consolidation\OutputFormatters\Transformations\TableTransformation
+     */
+    public function restructure(FormatterOptions $options)
+    {
+        $data = [$this->getArrayCopy()];
+        $options->setConfigurationDefault('list-orientation', true);
+        $tableTransformer = $this->createTableTransformation($data, $options);
+        return $tableTransformer;
+    }
+
+    public function getListData(FormatterOptions $options)
+    {
+        $data = $this->getArrayCopy();
+
+        $defaults = $this->defaultOptions();
+        $fieldLabels = $this->getReorderedFieldLabels([$data], $options, $defaults);
+
+        $result = [];
+        foreach ($fieldLabels as $id => $label) {
+            $result[$id] = $data[$id];
+        }
+        return $result;
+    }
+
+    protected function defaultOptions()
+    {
+        return [
+            FormatterOptions::LIST_ORIENTATION => true,
+        ] + parent::defaultOptions();
+    }
+
+    protected function instantiateTableTransformation($data, $fieldLabels, $rowLabels)
+    {
+        return new PropertyListTableTransformation($data, $fieldLabels, $rowLabels);
+    }
+}