1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?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;
- use Symfony\Component\Translation\Exception\InvalidArgumentException;
- /**
- * 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);
- }
|