mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-01 08:50:50 +00:00
a3e534ff19
db2e76b99c
load stubs in config
49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Ssch\TYPO3Rector\FileProcessor\TypoScript\Conditions;
|
|
|
|
use Ssch\TYPO3Rector\Contract\FileProcessor\TypoScript\Conditions\TyposcriptConditionMatcher;
|
|
use Ssch\TYPO3Rector\Helper\ArrayUtility;
|
|
final class ApplicationContextConditionMatcher implements \Ssch\TYPO3Rector\Contract\FileProcessor\TypoScript\Conditions\TyposcriptConditionMatcher
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
private const TYPE = 'applicationContext';
|
|
/**
|
|
* @param string $condition
|
|
*/
|
|
public function change($condition) : ?string
|
|
{
|
|
\preg_match('#' . self::TYPE . self::ZERO_ONE_OR_MORE_WHITESPACES . '=' . self::ZERO_ONE_OR_MORE_WHITESPACES . '(.*)#', $condition, $matches);
|
|
if (!\is_array($matches)) {
|
|
return $condition;
|
|
}
|
|
$values = \Ssch\TYPO3Rector\Helper\ArrayUtility::trimExplode(',', $matches[1], \true);
|
|
$newConditions = [];
|
|
foreach ($values as $value) {
|
|
if ($this->isRegularExpression($value)) {
|
|
$newConditions[] = \sprintf('applicationContext matches "%s"', $value);
|
|
} else {
|
|
$newConditions[] = \sprintf('applicationContext == "%s"', $value);
|
|
}
|
|
}
|
|
return \implode(' || ', $newConditions);
|
|
}
|
|
/**
|
|
* @param string $condition
|
|
*/
|
|
public function shouldApply($condition) : bool
|
|
{
|
|
if (\strpos($condition, self::CONTAINS_CONSTANT) !== \false) {
|
|
return \false;
|
|
}
|
|
return 1 === \preg_match('#^' . self::TYPE . self::ZERO_ONE_OR_MORE_WHITESPACES . '=[^=]#', $condition);
|
|
}
|
|
private function isRegularExpression(string $regularExpression) : bool
|
|
{
|
|
return \false !== @\preg_match($regularExpression, '');
|
|
}
|
|
}
|