<?php 
/** 
 * gTemplate Internal Function 
 * Parses 'is' expressions in 'if' tag 
 * 
 * @package    gTemplate 
 * @subpackage internalFunctions 
 */ 
 
 
function compile_parse_is_expr($is_arg, $_args, &$gTpl) 
{ 
    $expr_end = 0; 
    $negate_expr = false; 
 
    if (($first_arg = array_shift($_args)) == 'not') { 
        $negate_expr = true; 
        $expr_type = array_shift($_args); 
    } 
    else 
    { 
        $expr_type = $first_arg; 
    } 
 
    switch ($expr_type) { 
        case 'even': 
            if (isset($_args[$expr_end]) && $_args[$expr_end] == 'by') 
            { 
                $expr_end++; 
                $expr_arg = $_args[$expr_end++]; 
                $expr = "!(1 & ($is_arg / " . $gTpl->_parse_variable($expr_arg) . "))"; 
            } 
            else 
            { 
                $expr = "!(1 & $is_arg)"; 
            } 
            break; 
 
        case 'odd': 
            if (isset($_args[$expr_end]) && $_args[$expr_end] == 'by') 
            { 
                $expr_end++; 
                $expr_arg = $_args[$expr_end++]; 
                $expr = "(1 & ($is_arg / " . $gTpl->_parse_variable($expr_arg) . "))"; 
                } 
                else 
                { 
                    $expr = "(1 & $is_arg)"; 
                } 
                break; 
 
            case 'div': 
                if (@$_args[$expr_end] == 'by') 
                { 
                    $expr_end++; 
                    $expr_arg = $_args[$expr_end++]; 
                    $expr = "!($is_arg % " . $gTpl->_parse_variable($expr_arg) . ")"; 
                } 
                else 
                { 
                    $gTpl->trigger_error("[SYNTAX] expecting 'by' after 'div'", E_USER_ERROR, $gTpl->_file, $gTpl->_linenum); 
                } 
            break; 
 
            default: 
                $gTpl->trigger_error("[SYNTAX] unknown 'is' expression - '$expr_type'", E_USER_ERROR, $gTpl->_file, $gTpl->_linenum); 
                break; 
        } 
 
    if ($negate_expr) { 
        $expr = "!($expr)"; 
    } 
 
    array_splice($_args, 0, $expr_end, $expr); 
 
    return $_args; 
} 
 
 
 |