TASK: Refactor code
* As we sometimes have to fix classnames inside a string, move this common work to trait. * Also make classname "free" of string quotes inside the check, not the concrete sniffs.
This commit is contained in:
parent
e6e372f8b1
commit
ba2ed2cf5f
3 changed files with 27 additions and 25 deletions
|
@ -139,7 +139,7 @@ trait ClassnameCheckerTrait
|
|||
*/
|
||||
public function addFixableError(PhpcsFile $phpcsFile, $classnamePosition, $classname)
|
||||
{
|
||||
$classname = trim($classname, '\\');
|
||||
$classname = trim($classname, '\\\'"'); // Remove trailing slash, and quotes.
|
||||
$this->addMaybeWarning($phpcsFile, $classnamePosition, $classname);
|
||||
|
||||
if ($this->isLegacyClassname($classname) === false) {
|
||||
|
@ -210,4 +210,26 @@ trait ClassnameCheckerTrait
|
|||
{
|
||||
return $classname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this inside your getTokenForReplacement if $classname is inside a string.
|
||||
* Strings will be converted to single quotes.
|
||||
*
|
||||
* @param string $classname
|
||||
* @return string
|
||||
*/
|
||||
protected function getTokenReplacementForString($classname)
|
||||
{
|
||||
$stringSign = $this->originalTokenContent[0];
|
||||
$token = explode($stringSign, $this->originalTokenContent);
|
||||
$token[1] = $classname;
|
||||
|
||||
// Migrate double quote to single quote.
|
||||
// This way no escaping of backslashes in class names is necessary.
|
||||
if ($stringSign === '"') {
|
||||
$stringSign = "'";
|
||||
}
|
||||
|
||||
return implode($stringSign, $token);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithMakeInstanceSniff imp
|
|||
return;
|
||||
}
|
||||
|
||||
$classname = trim($tokens[$classnamePosition]['content'], '\'"');
|
||||
$classname = $tokens[$classnamePosition]['content'];
|
||||
$this->originalTokenContent = $tokens[$classnamePosition]['content'];
|
||||
$this->addFixableError($phpcsFile, $classnamePosition, $classname);
|
||||
}
|
||||
|
@ -83,16 +83,6 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithMakeInstanceSniff imp
|
|||
*/
|
||||
protected function getTokenForReplacement($classname)
|
||||
{
|
||||
$stringSign = $this->originalTokenContent[0];
|
||||
$token = explode($stringSign, $this->originalTokenContent);
|
||||
$token[1] = $classname;
|
||||
|
||||
// Migrate double quote to single quote.
|
||||
// This way no escaping of backslashes in class names is necessary.
|
||||
if ($stringSign === '"') {
|
||||
$stringSign = "'";
|
||||
}
|
||||
|
||||
return implode($stringSign, $token);
|
||||
return $this->getTokenReplacementForString($classname);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff im
|
|||
);
|
||||
}
|
||||
|
||||
$classname = trim($tokens[$classnamePosition]['content'], '\'"');
|
||||
$classname = $tokens[$classnamePosition]['content'];
|
||||
$this->originalTokenContent = $tokens[$classnamePosition]['content'];
|
||||
$this->addFixableError($phpcsFile, $classnamePosition, $classname);
|
||||
}
|
||||
|
@ -87,16 +87,6 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff im
|
|||
*/
|
||||
protected function getTokenForReplacement($classname)
|
||||
{
|
||||
$stringSign = $this->originalTokenContent[0];
|
||||
$token = explode($stringSign, $this->originalTokenContent);
|
||||
$token[1] = $classname;
|
||||
|
||||
// Migrate double quote to single quote.
|
||||
// This way no escaping of backslashes in class names is necessary.
|
||||
if ($stringSign === '"') {
|
||||
$stringSign = "'";
|
||||
}
|
||||
|
||||
return implode($stringSign, $token);
|
||||
return $this->getTokenReplacementForString($classname);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue