/** * @param Parser $parser * @param Token $token * @param bool $negate * @return IfEqualNode * @throws TemplateSyntaxError */ function do_ifequal($parser, $token, $negate) { $bits = $token->splitContents(); if (count($bits) != 3) { throw new TemplateSyntaxError($bits[0] . ' takes two arguments'); } $end_tag = 'end' . $bits[0]; $nodelist_true = $parser->parse(array('else', $end_tag)); $token = $parser->nextToken(); if ($token->contents == 'else') { $nodelist_false = $parser->parse(array($end_tag)); $parser->deleteFirstToken(); } else { $nodelist_false = new NodeList(); } $val1 = $parser->compileFilter($bits[1]); $val2 = $parser->compileFilter($bits[2]); return new IfEqualNode($val1, $val2, $nodelist_true, $nodelist_false, $negate); }
/** * Returns a template.Node subclass. * * @static * * @param Parser $parser * @param Token $token * @param array $params * @param null $varargs * @param null $varkw * @param array $defaults * @param string $name * @param bool|null $takes_context * @param string $node_class * @param array $node_opts_ * * @return Node|object */ public static function genericTagCompiler($parser, $token, $params, $varargs, $varkw, $defaults, $name, $takes_context, $node_class, $node_opts_) { $bits = py_slice($token->splitContents(), 1); list($args, $kwargs) = DjaBase::parseBits($parser, $bits, $params, $varargs, $varkw, $defaults, $takes_context, $name); py_arr_insert($args, 0, $takes_context); /** @var $node_class Node */ return $node_class::spawn_($args, $node_opts_); }
public function testTokenSmartSplit() { // Regression test for #7027 $token = new Token(DjaBase::TOKEN_BLOCK, 'sometag _("Page not found") value|yesno:_("yes,no")'); $split = $token->splitContents(); $this->assertEquals(array("sometag", '_("Page not found")', 'value|yesno:_("yes,no")'), $split); }