Version 1
[yaffs-website] / vendor / consolidation / annotated-command / src / Parser / Internal / CsvUtils.php
diff --git a/vendor/consolidation/annotated-command/src/Parser/Internal/CsvUtils.php b/vendor/consolidation/annotated-command/src/Parser/Internal/CsvUtils.php
new file mode 100644 (file)
index 0000000..88ed389
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+namespace Consolidation\AnnotatedCommand\Parser\Internal;
+
+/**
+ * Methods to convert to / from a csv string.
+ */
+class CsvUtils
+{
+    /**
+     * Ensure that the provided data is a string.
+     *
+     * @param string|array $data The data to convert to a string.
+     * @return string
+     */
+    public static function toString($data)
+    {
+        if (is_array($data)) {
+            return static::csvEscape($data);
+        }
+        return $data;
+    }
+
+    /**
+     * Convert a string to a csv.
+     */
+    public static function csvEscape(array $data, $delimiter = ',')
+    {
+        $buffer = fopen('php://temp', 'r+');
+        fputcsv($buffer, $data, $delimiter);
+        rewind($buffer);
+        $csv = fgets($buffer);
+        fclose($buffer);
+        return rtrim($csv);
+    }
+
+    /**
+     * Return a specific named annotation for this command.
+     *
+     * @param string|array $data The data to convert to an array.
+     * @return array
+     */
+    public static function toList($data)
+    {
+        if (!is_array($data)) {
+            return str_getcsv($data);
+        }
+        return $data;
+    }
+}