-
-
Notifications
You must be signed in to change notification settings - Fork 170
/
DocCommentHelper.php
41 lines (32 loc) · 1.42 KB
/
DocCommentHelper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php declare(strict_types = 1);
namespace SlevomatCodingStandard\Helpers;
class DocCommentHelper
{
public static function hasDocComment(\PHP_CodeSniffer_File $codeSnifferFile, int $pointer): bool
{
return self::findDocCommentOpenToken($codeSnifferFile, $pointer) !== null;
}
public static function hasDocCommentDescription(\PHP_CodeSniffer_File $codeSnifferFile, int $pointer): bool
{
$docCommentOpenToken = self::findDocCommentOpenToken($codeSnifferFile, $pointer);
if ($docCommentOpenToken === null) {
return false;
}
$tokens = $codeSnifferFile->getTokens();
$found = $codeSnifferFile->findNext([T_DOC_COMMENT_WHITESPACE, T_DOC_COMMENT_STAR], $docCommentOpenToken + 1, $tokens[$docCommentOpenToken]['comment_closer'] - 1, true);
return $found !== false && $tokens[$found]['code'] === T_DOC_COMMENT_STRING;
}
/**
* @param \PHP_CodeSniffer_File $codeSnifferFile
* @param int $pointer
* @return int|null
*/
public static function findDocCommentOpenToken(\PHP_CodeSniffer_File $codeSnifferFile, int $pointer)
{
$found = TokenHelper::findPreviousExcluding($codeSnifferFile, [T_WHITESPACE, T_COMMENT, T_PUBLIC, T_PROTECTED, T_PRIVATE, T_FINAL, T_STATIC, T_ABSTRACT, T_CONST, T_CLASS, T_INTERFACE, T_TRAIT], $pointer - 1);
if ($found !== null && $codeSnifferFile->getTokens()[$found]['code'] === T_DOC_COMMENT_CLOSE_TAG) {
return $codeSnifferFile->getTokens()[$found]['comment_opener'];
}
return null;
}
}