コード例 #1
0
ファイル: DefineTag.php プロジェクト: bugadani/minty
 public function parse(Parser $parser, Stream $stream)
 {
     $templateNameToken = $stream->expect(Token::IDENTIFIER);
     $templateName = $templateNameToken->getValue();
     $stream->expect(Token::TAG_END);
     $classNode = $parser->getCurrentClassNode();
     if ($classNode->hasChild($templateName)) {
         throw new ParseException("Block {$templateName} is already defined", $templateNameToken->getLine());
     }
     $parser->enterBlock($templateName);
     $parser->getCurrentClassNode()->addChild($parser->parseBlock($stream, 'enddefine'), $templateName);
     $stream->expect(Token::TAG_END);
     $parser->leaveBlock();
 }
コード例 #2
0
ファイル: ExtendsTag.php プロジェクト: bugadani/minty
 public function parse(Parser $parser, Stream $stream)
 {
     if (!$parser->inMainScope()) {
         throw new ParseException("Extends tags must be placed in the main scope. Unexpected extends tag", $stream->current()->getLine());
     }
     $parser->getCurrentClassNode()->setParentTemplate($parser->parseExpression($stream));
 }
コード例 #3
0
ファイル: EmbedTag.php プロジェクト: bugadani/minty
 /**
  * @param Parser $parser
  * @param Stream $stream
  * @param        $parentTemplate
  *
  * @return ClassNode
  */
 private function parseClass(Parser $parser, Stream $stream, $parentTemplate)
 {
     $oldClassNode = $parser->getCurrentClassNode();
     $fileNode = $parser->getCurrentFileNode();
     /** @var $classNode ClassNode */
     $classNode = $fileNode->addClass($fileNode->getNextEmbeddedTemplateName());
     $classNode->setParentTemplate($parentTemplate);
     $parser->setCurrentClassNode($classNode);
     $classNode->addChild($parser->parseBlock($stream, 'endembed'), ClassNode::MAIN_TEMPLATE_BLOCK);
     $stream->expect(Token::TAG_END);
     $parser->setCurrentClassNode($oldClassNode);
     return $classNode->getClassName();
 }
コード例 #4
0
ファイル: BlockTag.php プロジェクト: bugadani/minty
 public function parse(Parser $parser, Stream $stream)
 {
     $templateNameToken = $stream->expect(Token::IDENTIFIER);
     $templateName = $templateNameToken->getValue();
     $stream->expect(Token::TAG_END);
     $classNode = $parser->getCurrentClassNode();
     if ($classNode->hasChild($templateName)) {
         throw new ParseException("Block {$templateName} is already defined", $templateNameToken->getLine());
     }
     $parser->enterBlock($templateName);
     $classNode->addChild($parser->parseBlock($stream, 'endblock'), $templateName);
     $stream->expect(Token::TAG_END);
     $parser->leaveBlock();
     return $this->helper->createRenderBlockNode($templateName, new TempVariableNode('context'));
 }