Example #1
0
 private function getSkipNodes($skipped)
 {
     $nodes = [];
     for ($i = 0, $n = count($skipped); $i < $n; $i++) {
         $token = $skipped[$i];
         if ($token instanceof CommentNode && $token->isLineComment()) {
             $comment = $token;
             $end = $i;
             for ($j = $i + 1; $j < $n; $j++) {
                 $token = $skipped[$j];
                 if ($token instanceof WhitespaceNode && $token->getNewlineCount() === 0) {
                     $j++;
                     $token = $j < $n ? $skipped[$j] : NULL;
                 }
                 if ($token instanceof CommentNode && $token->getCommentType() === $comment->getCommentType()) {
                     $end = $j;
                 } else {
                     break;
                 }
             }
             if ($end > $i) {
                 $comment_block = new LineCommentBlockNode();
                 for ($j = $i; $j <= $end; $j++) {
                     $comment_block->addChild($skipped[$j]);
                 }
                 $i = $end;
                 $nodes[] = $comment_block;
             } else {
                 $nodes[] = $comment;
             }
         } else {
             $nodes[] = $token;
         }
     }
     return $nodes;
 }