diff options
Diffstat (limited to 'inc/Twig/Extensions/Grammar/Body.php')
-rw-r--r-- | inc/Twig/Extensions/Grammar/Body.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/inc/Twig/Extensions/Grammar/Body.php b/inc/Twig/Extensions/Grammar/Body.php new file mode 100644 index 00000000..540cfc75 --- /dev/null +++ b/inc/Twig/Extensions/Grammar/Body.php | |||
@@ -0,0 +1,39 @@ | |||
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 | class Twig_Extensions_Grammar_Body extends Twig_Extensions_Grammar | ||
12 | { | ||
13 | protected $end; | ||
14 | |||
15 | public function __construct($name, $end = null) | ||
16 | { | ||
17 | parent::__construct($name); | ||
18 | |||
19 | $this->end = null === $end ? 'end'.$name : $end; | ||
20 | } | ||
21 | |||
22 | public function __toString() | ||
23 | { | ||
24 | return sprintf('<%s:body>', $this->name); | ||
25 | } | ||
26 | |||
27 | public function parse(Twig_Token $token) | ||
28 | { | ||
29 | $stream = $this->parser->getStream(); | ||
30 | $stream->expect(Twig_Token::BLOCK_END_TYPE); | ||
31 | |||
32 | return $this->parser->subparse(array($this, 'decideBlockEnd'), true); | ||
33 | } | ||
34 | |||
35 | public function decideBlockEnd(Twig_Token $token) | ||
36 | { | ||
37 | return $token->test($this->end); | ||
38 | } | ||
39 | } | ||