Hoa central
ControlFlowStatement.php
Go to the documentation of this file.
1 <?php
2 
38 
39 use SplFileInfo;
43 
53 class ControlFlowStatement extends AbstractFixer
54 {
55  public function fix(SplFileInfo $file, $content)
56  {
57  $tokens = Tokens::fromCode($content);
58 
59  for ($index = 0, $limit = $tokens->count(); $index < $limit; ++$index) {
60  $token = $tokens[$index];
61 
62  if (!$token->isGivenKind([T_RETURN, T_BREAK, T_CONTINUE])) {
63  continue;
64  }
65 
66  $prevNonWhitespaceToken = $tokens[$tokens->getPrevNonWhitespace($index)];
67 
68  if (!$prevNonWhitespaceToken->equalsAny([';', '}'])) {
69  continue;
70  }
71 
72  $prevToken = $tokens[$index - 1];
73 
74  if ($prevToken->isWhitespace()) {
75  $parts = explode("\n", $prevToken->getContent());
76  $countParts = count($parts);
77 
78  if (1 === $countParts) {
79  $prevToken->setContent(rtrim($prevToken->getContent(), " \t") . "\n\n");
80  } elseif (count($parts) <= 2) {
81  $prevToken->setContent("\n" . $prevToken->getContent());
82  }
83  } else {
84  $tokens->insertAt($index, new Token([T_WHITESPACE, "\n\n"]));
85 
86  ++$index;
87  ++$limit;
88  }
89  }
90 
91  return $tokens->generateCode();
92  }
93 
94  public function getDescription()
95  {
96  return 'Add a newline before `return`, `break` and `continue` if needed.';
97  }
98 
99  public function getName()
100  {
101  return 'control_flow_statement';
102  }
103 
104  public function getLevel()
105  {
106  return FixerInterface::CONTRIB_LEVEL;
107  }
108 }
$content
Definition: Hoa.php:119