Version 1
[yaffs-website] / vendor / consolidation / output-formatters / src / Formatters / XmlFormatter.php
diff --git a/vendor/consolidation/output-formatters/src/Formatters/XmlFormatter.php b/vendor/consolidation/output-formatters/src/Formatters/XmlFormatter.php
new file mode 100644 (file)
index 0000000..05533f2
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+namespace Consolidation\OutputFormatters\Formatters;
+
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Helper\Table;
+use Symfony\Component\Console\Helper\TableStyle;
+
+use Consolidation\OutputFormatters\Validate\ValidDataTypesInterface;
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\Validate\ValidDataTypesTrait;
+use Consolidation\OutputFormatters\StructuredData\TableDataInterface;
+use Consolidation\OutputFormatters\Transformations\ReorderFields;
+use Consolidation\OutputFormatters\Exception\IncompatibleDataException;
+use Consolidation\OutputFormatters\StructuredData\Xml\DomDataInterface;
+
+/**
+ * Display a table of data with the Symfony Table class.
+ *
+ * This formatter takes data of either the RowsOfFields or
+ * PropertyList data type.  Tables can be rendered with the
+ * rows running either vertically (the normal orientation) or
+ * horizontally.  By default, associative lists will be displayed
+ * as two columns, with the key in the first column and the
+ * value in the second column.
+ */
+class XmlFormatter implements FormatterInterface, ValidDataTypesInterface
+{
+    use ValidDataTypesTrait;
+
+    public function __construct()
+    {
+    }
+
+    public function validDataTypes()
+    {
+        return
+            [
+                new \ReflectionClass('\DOMDocument'),
+                new \ReflectionClass('\ArrayObject'),
+            ];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function validate($structuredData)
+    {
+        if ($structuredData instanceof \DOMDocument) {
+            return $structuredData;
+        }
+        if ($structuredData instanceof DomDataInterface) {
+            return $structuredData->getDomData();
+        }
+        if (!is_array($structuredData)) {
+            throw new IncompatibleDataException(
+                $this,
+                $structuredData,
+                $this->validDataTypes()
+            );
+        }
+        return $structuredData;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function write(OutputInterface $output, $dom, FormatterOptions $options)
+    {
+        if (is_array($dom)) {
+            $schema = $options->getXmlSchema();
+            $dom = $schema->arrayToXML($dom);
+        }
+        $dom->formatOutput = true;
+        $output->writeln($dom->saveXML());
+    }
+}