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());
 }
Example #2
0
 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;
 }