PHP Classes

File: lib/internal/compile.parse_is_expr.php

Recommend this page to a friend!
  Classes of David Tamas   g-template-php   lib/internal/compile.parse_is_expr.php   Download  
File: lib/internal/compile.parse_is_expr.php
Role: Example script
Content type: text/plain
Description: Example script
Class: g-template-php
Process and render templates generating PHP code
Author: By
Last change:
Date: 5 years ago
Size: 2,072 bytes
 

Contents

Class file image Download
<?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;
}