Loop_Token_Parser   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 41
rs 10
c 0
b 0
f 0
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A decide_loop_end() 0 2 1
A parse() 0 15 2
A getTag() 0 3 1
1
<?php
2
3
namespace Rarst\Meadow;
4
5
use Twig_Token;
6
7
class Loop_Token_Parser extends \Twig_TokenParser {
8
9
	/**
10
	 * Parses a token and returns a node.
11
	 *
12
	 * @param Twig_Token $token
13
	 *
14
	 * @return Loop_Node
15
	 */
16
	public function parse( Twig_Token $token ) {
17
18
		$nodes  = array();
19
		$parser = $this->parser;
20
		$stream = $parser->getStream();
21
22
		if ( ! $stream->getCurrent()->test( Twig_Token::BLOCK_END_TYPE ) ) {
23
			$nodes['query'] = $parser->getExpressionParser()->parseExpression();
24
		}
25
26
		$stream->expect( Twig_Token::BLOCK_END_TYPE );
27
		$nodes['body'] = $parser->subparse( array( $this, 'decide_loop_end' ), true );
28
		$stream->expect( Twig_Token::BLOCK_END_TYPE );
29
30
		return new Loop_Node( $nodes, array(), $token->getLine(), $this->getTag() );
31
	}
32
33
	/**
34
	 * @return string
35
	 */
36
	public function getTag() {
37
38
		return 'loop';
39
	}
40
41
	/**
42
	 * @param Twig_Token $token
43
	 *
44
	 * @return bool
45
	 */
46
	public function decide_loop_end( Twig_Token $token ) {
47
		return $token->test( 'endloop' );
48
	}
49
}