Dotclear

source: inc/libs/Twig/TokenParser/From.php @ 1149:1657e862089c

Revision 1149:1657e862089c, 1.8 KB checked in by dsls, 13 years ago (diff)

Fixed unix case-sensitive twig directory

Line 
1<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) 2010 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
12/**
13 * Imports macros.
14 *
15 * <pre>
16 *   {% from 'forms.html' import forms %}
17 * </pre>
18 */
19class Twig_TokenParser_From extends Twig_TokenParser
20{
21    /**
22     * Parses a token and returns a node.
23     *
24     * @param Twig_Token $token A Twig_Token instance
25     *
26     * @return Twig_NodeInterface A Twig_NodeInterface instance
27     */
28    public function parse(Twig_Token $token)
29    {
30        $macro = $this->parser->getExpressionParser()->parseExpression();
31        $stream = $this->parser->getStream();
32        $stream->expect('import');
33
34        $targets = array();
35        do {
36            $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
37
38            $alias = $name;
39            if ($stream->test('as')) {
40                $stream->next();
41
42                $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
43            }
44
45            $targets[$name] = $alias;
46
47            if (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ',')) {
48                break;
49            }
50
51            $stream->next();
52        } while (true);
53
54        $stream->expect(Twig_Token::BLOCK_END_TYPE);
55
56        $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag());
57
58        foreach ($targets as $name => $alias) {
59            $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var'));
60        }
61
62        return $node;
63    }
64
65    /**
66     * Gets the tag name associated with this token parser.
67     *
68     * @return string The tag name
69     */
70    public function getTag()
71    {
72        return 'from';
73    }
74}
Note: See TracBrowser for help on using the repository browser.

Sites map