private function parseInline(\Twig_TokenStream $stream, $lineno) { $stream->expect(\Twig_Token::BLOCK_END_TYPE); $this->parser->subparse(function ($token) { return $token->test(['end' . $this->getTag()]); }, true); $stream->expect(\Twig_Token::BLOCK_END_TYPE); $file = $this->parser->getEnvironment()->getLoader()->getCacheKey($stream->getFilename()); if (!isset($this->inline_blocks[$file])) { $this->inline_blocks[$file] = 0; } $file_name = md5($file . $this->inline_blocks[$file]) . ".js"; $assets = $this->extension->webpackAsset('cache.' . $file_name); $this->inline_blocks[$file]++; return new WebpackInlineNode(['js_file' => $assets['js'], 'css_file' => $assets['css']], $lineno, $this->getTag()); }
public function subparse($test, $dropNeedle = false) { if (!is_object($this->handlers)) { $this->handlers = new Zwig_FallbackArray($this->handlers); } return parent::subparse($test, $dropNeedle); }
public function parseOptionsTag(\Twig_Parser $parser, $hasContent = true, $method = 'decideBlockEnd') { $options = array(); if (!$parser->getStream()->test(\Twig_Token::BLOCK_END_TYPE)) { do { $nameExpression = $this->parser->getExpressionParser()->parseExpression(); $name = $nameExpression->getAttribute('name'); $options['names'][$name] = $nameExpression; $parser->getStream()->expect(\Twig_Token::OPERATOR_TYPE, '='); $options['values'][$name] = $parser->getExpressionParser()->parseExpression(); } while (!$parser->getStream()->test(\Twig_Token::BLOCK_END_TYPE)); } if ($hasContent) { $parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE); $options['content'] = $parser->subparse(array($this, $method), true); } $parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE); return $options; }