Esempio n. 1
0
 public function testGetEol()
 {
     $patcher = new Patcher("\n \n \r");
     $this->assertEquals("\n", $patcher->getEol());
     $patcher = new Patcher("\r\n \r\n");
     $this->assertEquals("\r\n", $patcher->getEol());
 }
Esempio n. 2
0
 /**
  * Backports PHP7 code to PHP5.
  *
  * @param string $code
  * @return string ported code
  * @throws PhpParser\Error
  */
 public function port($code)
 {
     $lexer = new PhpParser\Lexer\Emulative(array('usedAttributes' => array('startFilePos', 'endFilePos', 'startTokenPos')));
     $parser = new PhpParser\Parser($lexer);
     $traverser = new PhpParser\NodeTraverser();
     $parsedStatements = $parser->parse($code);
     $tokens = new Tokens($lexer->getTokens());
     $patchFactory = new PatchFactory($tokens);
     $patches = new PatchCollection();
     $traverser->addVisitor(new Visitor\Coalesce($patchFactory, $patches));
     $traverser->addVisitor(new Visitor\ReturnType($patchFactory, $patches));
     $traverser->addVisitor(new Visitor\ScalarTypehint($patchFactory, $patches));
     $traverser->addVisitor(new Visitor\Spaceship($patchFactory, $patches));
     $traverser->addVisitor(new Visitor\AnonymousClass($patchFactory, $patches));
     $traverser->addVisitor(new Visitor\IntDiv($patchFactory, $patches));
     $traverser->traverse($parsedStatements);
     $patcher = new Patcher($code);
     $patcher->apply($patches);
     return $patcher->getCode();
 }