You are here

AbstractFileExtractor.php in Plug 7

File

lib/Symfony/translation/Extractor/AbstractFileExtractor.php
View source
<?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
   *
   * @throws \InvalidArgumentException
   *
   * @return bool
   */
  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
   */
  protected abstract function canBeExtracted($file);

  /**
   * @param string|array $resource files, a file or a directory
   *
   * @return array files to be extracted
   */
  protected abstract function extractFromDirectory($resource);

}

Classes

Namesort descending Description
AbstractFileExtractor Base class used by classes that extract translation messages from files.