Version 1
[yaffs-website] / vendor / phpspec / prophecy / src / Prophecy / Util / StringUtil.php
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php
new file mode 100644 (file)
index 0000000..bb90156
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <ever.zet@gmail.com>
+ *     Marcello Duarte <marcello.duarte@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Util;
+
+use Prophecy\Call\Call;
+
+/**
+ * String utility.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+class StringUtil
+{
+    /**
+     * Stringifies any provided value.
+     *
+     * @param mixed   $value
+     * @param boolean $exportObject
+     *
+     * @return string
+     */
+    public function stringify($value, $exportObject = true)
+    {
+        if (is_array($value)) {
+            if (range(0, count($value) - 1) === array_keys($value)) {
+                return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']';
+            }
+
+            $stringify = array($this, __FUNCTION__);
+
+            return '['.implode(', ', array_map(function ($item, $key) use ($stringify) {
+                return (is_integer($key) ? $key : '"'.$key.'"').
+                    ' => '.call_user_func($stringify, $item);
+            }, $value, array_keys($value))).']';
+        }
+        if (is_resource($value)) {
+            return get_resource_type($value).':'.$value;
+        }
+        if (is_object($value)) {
+            return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value));
+        }
+        if (true === $value || false === $value) {
+            return $value ? 'true' : 'false';
+        }
+        if (is_string($value)) {
+            $str = sprintf('"%s"', str_replace("\n", '\\n', $value));
+
+            if (50 <= strlen($str)) {
+                return substr($str, 0, 50).'"...';
+            }
+
+            return $str;
+        }
+        if (null === $value) {
+            return 'null';
+        }
+
+        return (string) $value;
+    }
+
+    /**
+     * Stringifies provided array of calls.
+     *
+     * @param Call[] $calls Array of Call instances
+     *
+     * @return string
+     */
+    public function stringifyCalls(array $calls)
+    {
+        $self = $this;
+
+        return implode(PHP_EOL, array_map(function (Call $call) use ($self) {
+            return sprintf('  - %s(%s) @ %s',
+                $call->getMethodName(),
+                implode(', ', array_map(array($self, 'stringify'), $call->getArguments())),
+                str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace())
+            );
+        }, $calls));
+    }
+}