Skip to content

Commit

Permalink
Use accessors to define excluded dirs
Browse files Browse the repository at this point in the history
  • Loading branch information
sowbiba committed Jun 17, 2021
1 parent 1e97b68 commit ad72dc0
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 70 deletions.
43 changes: 14 additions & 29 deletions Translation/Extractor/AbstractFileExtractor.php
Expand Up @@ -24,47 +24,32 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
declare(strict_types=1);

namespace PrestaShop\TranslationToolsBundle\Translation\Extractor;

use Symfony\Component\Translation\Extractor\AbstractFileExtractor as BaseAbstractFileExtractor;
use Symfony\Component\Translation\Extractor\ExtractorInterface;

abstract class AbstractFileExtractor extends BaseAbstractFileExtractor
abstract class AbstractFileExtractor extends BaseAbstractFileExtractor implements ExtractorInterface
{
/**
* @param string|iterable $resource Files, a file or a directory
* @param array $excludedResources Directories that can be excluded from scanned resources
*
* @return iterable
* @var array
*/
protected function extractFiles($resource, array $excludedResources = [])
{
if (\is_array($resource) || $resource instanceof \Traversable) {
$files = [];
foreach ($resource as $file) {
if ($this->canBeExtracted($file) && !in_array($file, $excludedResources, true)) {
$files[] = $this->toSplFileInfo($file);
}
}
} elseif (is_file($resource)) {
$files = $this->canBeExtracted($resource) ? [$this->toSplFileInfo($resource)] : [];
} else {
$files = $this->extractFromDirectory($resource, $excludedResources);
}

return $files;
}
private $excludedDirectories = [];

private function toSplFileInfo(string $file): \SplFileInfo
public function getExcludedDirectories(): array
{
return new \SplFileInfo($file);
return $this->excludedDirectories;
}

/**
* @param string|array $resource Files, a file or a directory
* @param array $excludedResources Directories that can be excluded from scanned resources
*
* @return iterable files to be extracted
* @return AbstractFileExtractor
*/
abstract protected function extractFromDirectory($resource, array $excludedResources = []);
public function excludedDirectories(array $excludedDirectories): self
{
$this->excludedDirectories = $excludedDirectories;

return $this;
}
}
10 changes: 5 additions & 5 deletions Translation/Extractor/CrowdinPhpExtractor.php
Expand Up @@ -32,7 +32,7 @@
use Symfony\Component\Finder\Finder;
use Symfony\Component\Translation\MessageCatalogue;

class CrowdinPhpExtractor extends AbstractFileExtractor implements ExtractorInterface
class CrowdinPhpExtractor extends AbstractFileExtractor
{
/**
* Prefix for new found message.
Expand All @@ -56,9 +56,9 @@ public function __construct(CrowdinPhpParser $crodwinPhpParser, OriginalStringMa
/**
* {@inheritdoc}
*/
public function extract($resource, MessageCatalogue $catalog, array $excludedResources = [])
public function extract($resource, MessageCatalogue $catalog)
{
$files = $this->extractFiles($resource, $excludedResources);
$files = $this->extractFiles($resource);
foreach ($files as $file) {
$generator = $this->crodwinPhpParser->parseFileTokens($file);
for (; $generator->valid(); $generator->next()) {
Expand Down Expand Up @@ -107,13 +107,13 @@ protected function canBeExtracted($file)
*
* @return array
*/
protected function extractFromDirectory($directory, $excludedResources = [])
protected function extractFromDirectory($directory)
{
$finder = new Finder();

return $finder->files()
->name('*.php')
->in($directory)
->exclude($excludedResources);
->exclude($this->getExcludedDirectories());
}
}
17 changes: 0 additions & 17 deletions Translation/Extractor/ExtractorInterface.php

This file was deleted.

10 changes: 5 additions & 5 deletions Translation/Extractor/PhpExtractor.php
Expand Up @@ -37,7 +37,7 @@
use PrestaShop\TranslationToolsBundle\Translation\Extractor\Visitor\Translation\FormType\FormTypeDeclaration;
use Symfony\Component\Translation\MessageCatalogue;

class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface
class PhpExtractor extends AbstractFileExtractor
{
use TraitExtractor;

Expand Down Expand Up @@ -78,9 +78,9 @@ public function __construct()
/**
* {@inheritdoc}
*/
public function extract($resource, MessageCatalogue $catalogue, array $excludedResources = [])
public function extract($resource, MessageCatalogue $catalogue)
{
$files = $this->extractFiles($resource, $excludedResources);
$files = $this->extractFiles($resource);

foreach ($files as $file) {
$this->parseFileTokens($file, $catalogue);
Expand Down Expand Up @@ -174,12 +174,12 @@ protected function canBeExtracted($file)
*
* @return array
*/
protected function extractFromDirectory($directory, $excludedResources = [])
protected function extractFromDirectory($directory)
{
return $this->getFinder()
->files()
->name('*.php')
->exclude($excludedResources)
->exclude($this->getExcludedDirectories())
->in($directory);
}
}
10 changes: 5 additions & 5 deletions Translation/Extractor/SmartyExtractor.php
Expand Up @@ -32,7 +32,7 @@
use SplFileInfo;
use Symfony\Component\Translation\MessageCatalogue;

class SmartyExtractor extends AbstractFileExtractor implements ExtractorInterface
class SmartyExtractor extends AbstractFileExtractor
{
use TraitExtractor;

Expand Down Expand Up @@ -64,9 +64,9 @@ public function __construct(
/**
* {@inheritdoc}
*/
public function extract($resource, MessageCatalogue $catalogue, array $excludedResources = [])
public function extract($resource, MessageCatalogue $catalogue)
{
$files = $this->extractFiles($resource, $excludedResources);
$files = $this->extractFiles($resource);
foreach ($files as $file) {
if (!$this->canBeExtracted($file->getRealpath())) {
continue;
Expand Down Expand Up @@ -133,11 +133,11 @@ protected function canBeExtracted($file)
/**
* {@inheritdoc}
*/
protected function extractFromDirectory($directory, $excludedResources = [])
protected function extractFromDirectory($directory)
{
return $this->getFinder()
->name('*.tpl')
->in($directory)
->exclude($excludedResources);
->exclude($this->getExcludedDirectories());
}
}
36 changes: 28 additions & 8 deletions Translation/Extractor/TwigExtractor.php
Expand Up @@ -31,6 +31,7 @@
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Bridge\Twig\Translation\TwigExtractor as BaseTwigExtractor;
use Symfony\Component\Finder\SplFileInfo;
use Symfony\Component\Translation\Extractor\ExtractorInterface;
use Symfony\Component\Translation\MessageCatalogue;
use Twig_Environment;
use Twig_Error;
Expand Down Expand Up @@ -59,6 +60,11 @@ class TwigExtractor extends BaseTwigExtractor implements ExtractorInterface
*/
private $twigLexer;

/**
* @var array
*/
private $excludedDirectories = [];

/**
* The twig environment.
*
Expand All @@ -70,12 +76,27 @@ public function __construct(Twig_Environment $twig)
$this->twigLexer = new Lexer($this->twig);
}

public function getExcludedDirectories(): array
{
return $this->excludedDirectories;
}

/**
* @return TwigExtractor
*/
public function excludedDirectories(array $excludedDirectories): self
{
$this->excludedDirectories = $excludedDirectories;

return $this;
}

/**
* {@inheritdoc}
*/
public function extract($resource, MessageCatalogue $catalogue, array $excludedResources = [])
public function extract($resource, MessageCatalogue $catalogue)
{
$files = $this->extractFiles($resource, $excludedResources);
$files = $this->extractFiles($resource);
foreach ($files as $file) {
if (!$this->canBeExtracted($file->getRealpath())) {
continue;
Expand Down Expand Up @@ -173,33 +194,32 @@ public function getEntryComment($comments, $file, $line)
*
* @return Finder
*/
protected function extractFromDirectory($directory, $excludedResources = [])
protected function extractFromDirectory($directory)
{
return $this->getFinder()->files()
->name('*.twig')
->in($directory)
->exclude($excludedResources);
->exclude($this->getExcludedDirectories());
}

/**
* @param string|iterable $resource Files, a file or a directory
* @param array $excludedResources Directories that can be excluded from scanned resources
*
* @return iterable
*/
protected function extractFiles($resource, array $excludedResources = [])
protected function extractFiles($resource)
{
if (\is_array($resource) || $resource instanceof \Traversable) {
$files = [];
foreach ($resource as $file) {
if ($this->canBeExtracted($file) && !in_array($file, $excludedResources, true)) {
if ($this->canBeExtracted($file)) {
$files[] = $this->toSplFileInfo($file);
}
}
} elseif (is_file($resource)) {
$files = $this->canBeExtracted($resource) ? [$this->toSplFileInfo($resource)] : [];
} else {
$files = $this->extractFromDirectory($resource, $excludedResources);
$files = $this->extractFromDirectory($resource);
}

return $files;
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -23,7 +23,7 @@
}
},
"require": {
"php": ">=7.2",
"php": ">=7.1",
"friendsofphp/php-cs-fixer": "^2.18",
"nikic/php-parser": "^4",
"smarty/smarty": "^3.1",
Expand Down

0 comments on commit ad72dc0

Please sign in to comment.