rector/packages/ChangesReporting/Annotation/AnnotationExtractor.php
Tomas Votruba 2e01de459a Updated Rector to commit 3e33dd1aa7
3e33dd1aa7 [DeadCode] Handle empty try and catch on RemoveDeadTryCatchRector (#1860)
2022-02-23 08:20:48 +00:00

31 lines
1011 B
PHP

<?php
declare (strict_types=1);
namespace Rector\ChangesReporting\Annotation;
use RectorPrefix20220223\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 = \RectorPrefix20220223\Nette\Utils\Strings::match($docComment, $pattern);
return $matches['content'] ?? null;
}
}