BUGFIX: Allow multiple type hints in php docs

* Respect possible separation by "|" and handle each of them.

Resolves: #48
This commit is contained in:
Daniel Siepmann 2017-04-04 10:54:41 +02:00
parent 2d33832a79
commit f3e708f5e0
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
6 changed files with 36 additions and 21 deletions

View file

@ -234,7 +234,7 @@ abstract class AbstractClassnameChecker implements PhpCsSniff
$phpcsFile->fixer->replaceToken(
$classnamePosition,
$this->getTokenForReplacement($prefix . $this->getNewClassname($classname))
$this->getTokenForReplacement($prefix . $this->getNewClassname($classname), $classname)
);
}
@ -242,12 +242,13 @@ abstract class AbstractClassnameChecker implements PhpCsSniff
* String to use for replacing / fixing the token.
* Default is class name itself, can be overwritten in sniff for special behaviour.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
return $classname;
return $newClassname;
}
/**

View file

@ -66,22 +66,32 @@ class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff extends AbstractClassn
if ($classnamePosition === false) {
return;
}
$classname = explode(' ', $tokens[$classnamePosition]['content'])[0];
$classnames = explode('|', explode(' ', $tokens[$classnamePosition]['content'])[0]);
$this->originalTokenContent = $tokens[$classnamePosition]['content'];
$this->addFixableError($phpcsFile, $classnamePosition, $classname);
foreach ($classnames as $classname) {
$this->addFixableError($phpcsFile, $classnamePosition, $classname);
}
}
/**
* As token contains more then just class name, we have to build new content ourself.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
$token = explode(' ', $this->originalTokenContent);
$token[0] = $classname;
$classNames = explode('|', $token[0]);
foreach ($classNames as $position => $classname) {
if ($classname === $originalClassname) {
$classNames[$position] = $newClassname;
}
}
$token[0] = implode('|', $classNames);
return implode(' ', $token);
}

View file

@ -81,13 +81,14 @@ class Typo3Update_Sniffs_LegacyClassnames_InlineCommentSniff extends AbstractCla
/**
* As token contains more then just class name, we have to build new content ourself.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
$token = preg_split('/\s+/', $this->originalTokenContent);
$token[$this->getClassnamePosition($token)] = $classname;
$token[$this->getClassnamePosition($token)] = $newClassname;
return implode(' ', $token);
}

View file

@ -73,11 +73,12 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithMakeInstanceSniff ext
/**
* As token contains more then just class name, we have to build new content ourself.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
return $this->getTokenReplacementForString($classname);
return $this->getTokenReplacementForString($newClassname);
}
}

View file

@ -83,11 +83,12 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff ex
/**
* As token contains more then just class name, we have to build new content ourself.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
return $this->getTokenReplacementForString($classname);
return $this->getTokenReplacementForString($newClassname);
}
}

View file

@ -72,11 +72,12 @@ class Typo3Update_Sniffs_LegacyClassnames_IsACallSniff extends AbstractClassname
/**
* As token contains more then just class name, we have to build new content ourself.
*
* @param string $classname
* @param string $newClassname
* @param string $originalClassname
* @return string
*/
protected function getTokenForReplacement($classname)
protected function getTokenForReplacement($newClassname, $originalClassname)
{
return $this->getTokenReplacementForString($classname);
return $this->getTokenReplacementForString($newClassname);
}
}