PluginProbe
Elementor Website Builder – more than just a page builder / 3.28.0-dev1
Elementor Website Builder – more than just a page builder v3.28.0-dev1
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / vendor_prefixed / twig / src / TokenParser / FromTokenParser.php

FromTokenParser.php in Elementor Website Builder – more than just a page builder 3.28.0-dev1, at vendor_prefixed/twig/src/TokenParser/FromTokenParser.php

73 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace ElementorDeps\Twig\TokenParser;
12
13 use ElementorDeps\Twig\Node\Expression\AssignNameExpression;
14 use ElementorDeps\Twig\Node\ImportNode;
15 use ElementorDeps\Twig\Node\Node;
16 use ElementorDeps\Twig\Token;
17 /**
18 * Imports macros.
19 *
20 * {% from 'forms.html' import forms %}
21 *
22 * @internal
23 */
24 final class FromTokenParser extends AbstractTokenParser
25 {
26 public function parse(Token $token) : Node
27 {
28 $macro = $this->parser->getExpressionParser()->parseExpression();
29 $stream = $this->parser->getStream();
30 $stream->expect(
31 /* Token::NAME_TYPE */
32 5,
33 'import'
34 );
35 $targets = [];
36 while (\true) {
37 $name = $stream->expect(
38 /* Token::NAME_TYPE */
39 5
40 )->getValue();
41 $alias = $name;
42 if ($stream->nextIf('as')) {
43 $alias = $stream->expect(
44 /* Token::NAME_TYPE */
45 5
46 )->getValue();
47 }
48 $targets[$name] = $alias;
49 if (!$stream->nextIf(
50 /* Token::PUNCTUATION_TYPE */
51 9,
52 ','
53 )) {
54 break;
55 }
56 }
57 $stream->expect(
58 /* Token::BLOCK_END_TYPE */
59 3
60 );
61 $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine());
62 $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope());
63 foreach ($targets as $name => $alias) {
64 $this->parser->addImportedSymbol('function', $alias, 'macro_' . $name, $var);
65 }
66 return $node;
67 }
68 public function getTag() : string
69 {
70 return 'from';
71 }
72 }
73