rector/packages/ChangesReporting/Annotation/AnnotationExtractor.php
Tomas Votruba 3df670f627 Updated Rector to commit 4ab2ab5850
ea2ea17385 [automated] Re-Generate Nodes/Rectors Documentation 4ab2ab5850 Merge pull request #1650 from rectorphp/automated-regenerated-nodes-rectors-documentation
2022-01-09 10:54:09 +00:00

31 lines
1011 B
PHP

<?php
declare (strict_types=1);
namespace Rector\ChangesReporting\Annotation;
use RectorPrefix20220109\Nette\Utils\Strings;
use Rector\Core\Contract\Rector\RectorInterface;
use ReflectionClass;
/**
* @see \Rector\Tests\ChangesReporting\Annotation\AnnotationExtractorTest
*/
final class AnnotationExtractor
{
/**
* @param class-string<RectorInterface> $className
*/
public function extractAnnotationFromClass(string $className, string $annotation) : ?string
{
$reflectionClass = new \ReflectionClass($className);
$docComment = $reflectionClass->getDocComment();
if (!\is_string($docComment)) {
return null;
}
// @see https://3v4l.org/ouYfB
// uses 'r?\n' instead of '$' because windows compat
$pattern = '#' . \preg_quote($annotation, '#') . '\\s+(?<content>.*?)\\r?\\n#m';
$matches = \RectorPrefix20220109\Nette\Utils\Strings::match($docComment, $pattern);
return $matches['content'] ?? null;
}
}