Ejemplo n.º 1
0
/**
 * @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);
}
Ejemplo n.º 2
0
 /**
  * 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_);
 }
Ejemplo n.º 3
0
 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);
 }