public function Twig_TokenParser_From::parse

Parses a token and returns a node.

Parameters

Twig_Token $token A Twig_Token instance:

Return value

Twig_NodeInterface A Twig_NodeInterface instance

Overrides Twig_TokenParserInterface::parse

File

drupal/core/vendor/twig/twig/lib/Twig/TokenParser/From.php, line 28

Class

Twig_TokenParser_From
Imports macros.

Code

public function parse(Twig_Token $token) {
  $macro = $this->parser
    ->getExpressionParser()
    ->parseExpression();
  $stream = $this->parser
    ->getStream();
  $stream
    ->expect('import');
  $targets = array();
  do {
    $name = $stream
      ->expect(Twig_Token::NAME_TYPE)
      ->getValue();
    $alias = $name;
    if ($stream
      ->test('as')) {
      $stream
        ->next();
      $alias = $stream
        ->expect(Twig_Token::NAME_TYPE)
        ->getValue();
    }
    $targets[$name] = $alias;
    if (!$stream
      ->test(Twig_Token::PUNCTUATION_TYPE, ',')) {
      break;
    }
    $stream
      ->next();
  } while (true);
  $stream
    ->expect(Twig_Token::BLOCK_END_TYPE);
  $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser
    ->getVarName(), $token
    ->getLine()), $token
    ->getLine(), $this
    ->getTag());
  foreach ($targets as $name => $alias) {
    $this->parser
      ->addImportedFunction($alias, 'get' . $name, $node
      ->getNode('var'));
  }
  return $node;
}