Mercurial > hg > dml-open-vis
comparison src/Kachkaev/JstmplBundle/Twig/JstmplTokenParser.php @ 0:493bcb69166c
added public content
author | Daniel Wolff |
---|---|
date | Tue, 09 Feb 2016 20:54:02 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:493bcb69166c |
---|---|
1 <?php | |
2 | |
3 namespace Kachkaev\JstmplBundle\Twig; | |
4 | |
5 class JstmplTokenParser extends \Twig_TokenParser | |
6 { | |
7 public function parse(\Twig_Token $token) | |
8 { | |
9 $lineno = $token->getLine(); | |
10 | |
11 $stream = $this->parser->getStream(); | |
12 | |
13 while (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) { | |
14 if ($stream->test(\Twig_Token::NAME_TYPE, 'id')) { | |
15 // id='tmpl_id' | |
16 $stream->next(); | |
17 $stream->expect(\Twig_Token::OPERATOR_TYPE, '='); | |
18 $id = $stream->expect(\Twig_Token::STRING_TYPE)->getValue(); | |
19 } else { | |
20 $token = $stream->getCurrent(); | |
21 throw new \Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s"', \Twig_Token::typeToEnglish($token->getType(), $token->getLine()), $token->getValue()), $token->getLine()); | |
22 } | |
23 } | |
24 | |
25 $stream->expect(\Twig_Token::BLOCK_END_TYPE); | |
26 | |
27 $endtag = 'end'.$this->getTag(); | |
28 $test = function(\Twig_Token $token) use($endtag) { | |
29 return $token->test($endtag); | |
30 }; | |
31 $body = $this->parser->subparse($test, true); | |
32 | |
33 $stream->expect(\Twig_Token::BLOCK_END_TYPE); | |
34 | |
35 return new JstmplNode($id, $body, $lineno, $this->getTag()); | |
36 } | |
37 | |
38 public function getTag() | |
39 { | |
40 return 'jstmpl'; | |
41 } | |
42 } |