2015-08-17 17:00:26 -07:00
< ? 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 ;
2018-11-23 12:29:20 +00:00
use Symfony\Component\Translation\Exception\InvalidArgumentException ;
2015-08-17 17:00:26 -07:00
/**
* Base class used by classes that extract translation messages from files .
*
* @ author Marcos D . Sánchez < marcosdsanchez @ gmail . com >
*/
abstract class AbstractFileExtractor
{
/**
2018-11-23 12:29:20 +00:00
* @ param string | array $resource Files , a file or a directory
2015-08-17 17:00:26 -07:00
*
* @ return array
*/
protected function extractFiles ( $resource )
{
2018-11-23 12:29:20 +00:00
if ( \is_array ( $resource ) || $resource instanceof \Traversable ) {
2015-08-17 17:00:26 -07:00
$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
2017-02-02 16:28:38 -08:00
*
2018-11-23 12:29:20 +00:00
* @ throws InvalidArgumentException
2015-08-17 17:00:26 -07:00
*/
protected function isFile ( $file )
{
if ( ! is_file ( $file )) {
2018-11-23 12:29:20 +00:00
throw new InvalidArgumentException ( sprintf ( 'The "%s" file does not exist.' , $file ));
2015-08-17 17:00:26 -07:00
}
return true ;
}
/**
* @ param string $file
*
* @ return bool
*/
abstract protected function canBeExtracted ( $file );
/**
2018-11-23 12:29:20 +00:00
* @ param string | array $resource Files , a file or a directory
2015-08-17 17:00:26 -07:00
*
* @ return array files to be extracted
*/
abstract protected function extractFromDirectory ( $resource );
}