Skip to content

Commit

Permalink
Specify number of blank lines between first member var and other memb…
Browse files Browse the repository at this point in the history
…er vars
  • Loading branch information
wilsonge committed May 15, 2017
1 parent bf38c8e commit f3c1607
Showing 1 changed file with 28 additions and 36 deletions.
64 changes: 28 additions & 36 deletions src/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,19 @@ class MemberVarSpacingSniff extends AbstractVariableSniff


/**
* The exception to the newline requirement on the first member var after class opener.
* false for newline requirement on the first member var after class opener
* true for no newline requirement on the first member var after class opener
* The number of blank lines between member vars.
*
* @var bool
* @var int
*/
public $firstVarException = false;
public $spacing = 1;


/**
* The number of blank lines between the class opener and the first member var.
*
* @var int
*/
public $firstMemberSpacing = 1;


/**
Expand Down Expand Up @@ -96,48 +102,34 @@ protected function processMemberVar(File $phpcsFile, $stackPtr)

$prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($first - 1), null, true);
$foundLines = ($tokens[$first]['line'] - $tokens[$prev]['line'] - 1);
$error = 'Expected %s blank line before member var; %s found';
$expected = $this->spacing;
$isFirst = $tokens[$prev]['code'] === T_OPEN_CURLY_BRACKET;

// We allow specifying a different number of spaces to the first operator.
if ($isFirst === true) {
$expected = $this->firstMemberSpacing;
$error = 'Expected %s blank lines before first member var; %s found';
}

// Exception to the newline requirement on the first member var after class opener.
if ($this->firstVarException === true) {
if ($foundLines > 0 && $tokens[$prev]['code'] === T_OPEN_CURLY_BRACKET) {
$error = 'Expected 0 blank lines before first member var; %s found';
$data = array($foundLines);
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'FirstMember', $data);
if ($fix === true) {
$phpcsFile->fixer->beginChangeset();
for ($i = ($prev + 1); $i < $first; $i++) {
if ($tokens[$i]['line'] === $tokens[$prev]['line']) {
continue;
}

if ($tokens[$i]['line'] === $tokens[$first]['line']) {
break;
}

$phpcsFile->fixer->replaceToken($i, '');
}

$phpcsFile->fixer->endChangeset();
}//end if
}//end if
}//end if

if ($foundLines === 1 || ($this->firstVarException === true && $tokens[$prev]['code'] === T_OPEN_CURLY_BRACKET)) {
if ($foundLines === $this->spacing || ($isFirst === true && $foundLines === $this->firstMemberSpacing)) {
return;
}

$error = 'Expected 1 blank line before member var; %s found';
$data = array($foundLines);
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data);
$data = array(
$expected,
$foundLines,
);
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data);
if ($fix === true) {
$phpcsFile->fixer->beginChangeset();
for ($i = ($prev + 1); $i < $first; $i++) {
for ($i = ($prev + $expected); $i < $first; $i++) {
if ($tokens[$i]['line'] === $tokens[$prev]['line']) {
continue;
}

if ($tokens[$i]['line'] === $tokens[$first]['line']) {
$phpcsFile->fixer->addNewline(($i - 1));
$phpcsFile->fixer->addNewline(($i - $expected));
break;
}

Expand Down

0 comments on commit f3c1607

Please sign in to comment.