Dotclear

source: inc/libs/twig/TokenParser/Include.php @ 991:e42f791e0975

Revision 991:e42f791e0975, 1.9 KB checked in by Dsls <dsls@…>, 13 years ago (diff)

New twig branch. 1st step : add twig 1.11.1

Line 
1<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) 2009 Fabien Potencier
7 * (c) 2009 Armin Ronacher
8 *
9 * For the full copyright and license information, please view the LICENSE
10 * file that was distributed with this source code.
11 */
12
13/**
14 * Includes a template.
15 *
16 * <pre>
17 *   {% include 'header.html' %}
18 *     Body
19 *   {% include 'footer.html' %}
20 * </pre>
21 */
22class Twig_TokenParser_Include extends Twig_TokenParser
23{
24    /**
25     * Parses a token and returns a node.
26     *
27     * @param Twig_Token $token A Twig_Token instance
28     *
29     * @return Twig_NodeInterface A Twig_NodeInterface instance
30     */
31    public function parse(Twig_Token $token)
32    {
33        $expr = $this->parser->getExpressionParser()->parseExpression();
34
35        list($variables, $only, $ignoreMissing) = $this->parseArguments();
36
37        return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
38    }
39
40    protected function parseArguments()
41    {
42        $stream = $this->parser->getStream();
43
44        $ignoreMissing = false;
45        if ($stream->test(Twig_Token::NAME_TYPE, 'ignore')) {
46            $stream->next();
47            $stream->expect(Twig_Token::NAME_TYPE, 'missing');
48
49            $ignoreMissing = true;
50        }
51
52        $variables = null;
53        if ($stream->test(Twig_Token::NAME_TYPE, 'with')) {
54            $stream->next();
55
56            $variables = $this->parser->getExpressionParser()->parseExpression();
57        }
58
59        $only = false;
60        if ($stream->test(Twig_Token::NAME_TYPE, 'only')) {
61            $stream->next();
62
63            $only = true;
64        }
65
66        $stream->expect(Twig_Token::BLOCK_END_TYPE);
67
68        return array($variables, $only, $ignoreMissing);
69    }
70
71    /**
72     * Gets the tag name associated with this token parser.
73     *
74     * @return string The tag name
75     */
76    public function getTag()
77    {
78        return 'include';
79    }
80}
Note: See TracBrowser for help on using the repository browser.

Sites map