You are here

abstract class AbstractFileExtractor in Plug 7

Base class used by classes that extract translation messages from files.

@author Marcos D. Sánchez <marcosdsanchez@gmail.com>

Hierarchy

Expanded class hierarchy of AbstractFileExtractor

File

lib/Symfony/translation/Extractor/AbstractFileExtractor.php, line 19

Namespace

Symfony\Component\Translation\Extractor
View source
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);

}

Members