Version 1
[yaffs-website] / vendor / symfony / translation / Extractor / AbstractFileExtractor.php
diff --git a/vendor/symfony/translation/Extractor/AbstractFileExtractor.php b/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
new file mode 100644 (file)
index 0000000..57fd493
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+/**
+ * Base class used by classes that extract translation messages from files.
+ *
+ * @author Marcos D. Sánchez <marcosdsanchez@gmail.com>
+ */
+abstract class AbstractFileExtractor
+{
+    /**
+     * @param string|array $resource files, a file or a directory
+     *
+     * @return array
+     */
+    protected function extractFiles($resource)
+    {
+        if (is_array($resource) || $resource instanceof \Traversable) {
+            $files = array();
+            foreach ($resource as $file) {
+                if ($this->canBeExtracted($file)) {
+                    $files[] = $this->toSplFileInfo($file);
+                }
+            }
+        } elseif (is_file($resource)) {
+            $files = $this->canBeExtracted($resource) ? array($this->toSplFileInfo($resource)) : array();
+        } else {
+            $files = $this->extractFromDirectory($resource);
+        }
+
+        return $files;
+    }
+
+    /**
+     * @param string $file
+     *
+     * @return \SplFileInfo
+     */
+    private function toSplFileInfo($file)
+    {
+        return ($file instanceof \SplFileInfo) ? $file : new \SplFileInfo($file);
+    }
+
+    /**
+     * @param string $file
+     *
+     * @return bool
+     *
+     * @throws \InvalidArgumentException
+     */
+    protected function isFile($file)
+    {
+        if (!is_file($file)) {
+            throw new \InvalidArgumentException(sprintf('The "%s" file does not exist.', $file));
+        }
+
+        return true;
+    }
+
+    /**
+     * @param string $file
+     *
+     * @return bool
+     */
+    abstract protected function canBeExtracted($file);
+
+    /**
+     * @param string|array $resource files, a file or a directory
+     *
+     * @return array files to be extracted
+     */
+    abstract protected function extractFromDirectory($resource);
+}